Files
WMS-Api/src/WMS.Web.Domain/Entitys/Box.cs
18942506660 710e66c86f 修复bug
2024-03-01 10:19:31 +08:00

152 lines
4.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
{
/// <summary>
/// 老ops箱信息头
/// </summary>
[Serializable]
[Table("t_ops_box")]
public class Box : EntityBase
{
/// <summary>
/// ID
/// </summary>
public override int Id { get; set; }
/// <summary>
/// 对应老OPS的箱ID
/// </summary>
public int OpsBoxId { get; set; }
/// <summary>
/// 箱编号老OPS生成的箱号
/// </summary>
public string BoxBillNo { get; set; }
/// <summary>
/// 供应商Id
/// </summary>
public int SupplierId { get; set; } = 0;
/// <summary>
/// 组织Id
/// </summary>
public int OrgId { get; set; } = 0;
/// <summary>
/// 完成装箱时间
/// </summary>
public DateTime CompleteCartonTime { get; set; } = DateTime.Now;
/// <summary>
/// 完成装箱用户
/// </summary>
public string CompleteCartonUser { get; set; }
/// <summary>
/// 箱子创建用户
/// </summary>
public string CreateUser { get; set; }
/// <summary>
/// 创建时间对应老OPS的创建时间
/// </summary>
public DateTime CreateTime { get; set; } = DateTime.Now;
/// <summary>
/// 明细
/// </summary>
public List<BoxDetails> Details { get; set; } = new List<BoxDetails>();
//移出
public Result Out(List<(int MaterialId, decimal Qty, List<string> 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<string> 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();
}
/// <summary>
/// 出入库回退上架
/// </summary>
/// <param name="materialId"></param>
/// <param name="qty"></param>
/// <returns></returns>
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();
}
/// <summary>
/// 出入库回退下架
/// </summary>
/// <param name="materialId"></param>
/// <param name="qty"></param>
/// <returns></returns>
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();
}
}
}