Files
BarCode-Api/src/BarCode.Web.Domain/Entitys/SerialNumbers.cs
2026-03-05 16:43:13 +08:00

358 lines
11 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 AutoMapper.Configuration.Annotations;
using BarCode.Web.Core;
using BarCode.Web.Core.Help;
using BarCode.Web.Core.Internal.Results;
using BarCode.Web.Domain.Services.Public;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BarCode.Web.Domain.Entitys
{
/// <summary>
/// 序列号 默认Id从 200000000 起始
/// alter table users AUTO_INCREMENT=200000000;
/// </summary>
[Serializable]
[Table("t_barcode_serialnumbers")]
public class SerialNumbers : EntityLongBase
{
/// <summary>
/// 主键 订单编号
/// </summary>
[Column("Id")]
public override long Id { get; set; }
/// <summary>
/// 组织Code
/// </summary>
[Column("OrgCode")]
public string OrgCode { get; set; } = string.Empty;
/// <summary>
/// 供应商code
/// </summary>
[Column("SupplierCode")]
public string SupplierCode { get; set; } = "";
/// <summary>
/// 生成记录Id
/// </summary>
[Column("GenerateRecordId")]
public int GenerateRecordId { get; set; } = 0;
/// <summary>
/// 序列号
/// </summary>
[Column("SerialNumber")]
public string SerialNumber { get; set; } = string.Empty;
/// <summary>
/// 套装(1代表单套2代表2套3代表3套 aLTER BY YZH
/// </summary>
[Column("IsTwo")]
public int IsTwo { get; set; } =1;
/// <summary>
///当次序号,用来记录当次所产生时所处的序列号
/// </summary>
[Column("thisNumber")]
public int? thisNumber { get; set; } = 1;
/// <summary>
/// 序列号
/// </summary>
[Ignore]
public string SuitNumber { get; set; } = string.Empty;
/// <summary>
/// 产生第二个
/// </summary>
[Ignore]
public string TwoSerialNumber { get; set; } = string.Empty;
/// <summary>
/// 物料Id
/// </summary>
[Column("MaterialId")]
public int MaterialId { get; set; } = 0;
/// <summary>
/// 物料编码
/// </summary>
[Column("MaterialNumber")]
public string MaterialNumber { get; set; } = string.Empty;
/// <summary>
/// 名称
/// </summary>
[Column("MaterialName")]
public string? MaterialName { get; set; } = string.Empty;
/// <summary>
/// 规格型号
/// </summary>
[Column("Specifications")]
public string? Specifications { get; set; } = string.Empty;
/// <summary>
///69码
/// </summary>
[Column("BarCode")]
public string? BarCode { get; set; } = string.Empty;
/// <summary>
/// 老物料编码(上一次物料编码)
/// </summary>
[Column("Old_MaterialNumber")]
public string? Old_MaterialNumber { get; set; } = string.Empty;
/// <summary>
/// 转换前规格型号(上一次规格型号)
/// </summary>
[Column("old_Specifications")]
public string? old_Specifications { get; set; } = string.Empty;
/// <summary>
/// 箱ID
/// </summary>
[Column("BoxId")]
public int BoxId { get; set; } = 0;
/// <summary>
/// 数字序列码
/// </summary>
[Column("NumberCode")]
public string NumberCode { get; set; } = string.Empty;
/// <summary>
/// 数字序列码
/// </summary>
[Column("TwoNumberCode")]
public string? TwoNumberCode { get; set; } = string.Empty;
/// <summary>
/// 数字序列码(不包含日期)
/// </summary>
[Column("Number")]
public int Number { get; set; } = 1;
/// <summary>
/// 是否使用
/// </summary>
[Column("IsUse")]
public bool IsUse { get; set; } = false;
/// <summary>
/// 创建人
/// </summary>
[Column("CreatorId")]
public int CreatorId { get; set; } = 0;
/// <summary>
/// 生成时间
/// </summary>
[Column("CreateTime")]
public DateTime CreateTime { get; set; } = DateTime.Now;
/// <summary>
/// 完成装箱时间
/// </summary>
[Column("CompleteCartonTime")]
public DateTime? CompleteCartonTime { get; set; }
/// <summary>
/// 打印次数
/// </summary>
[Column("PrintNumber")]
public int PrintNumber { get; set; } = 0;
/// <summary>
/// 下载次数
/// </summary>
[Column("DownLoadNumber")]
public int DownLoadNumber { get; set; } = 0;
/// <summary>
/// 最新打印时间
/// </summary>
[Column("PrintTime")]
public DateTime? PrintTime { get; set; }
/// <summary>
/// 最新下载时间
/// </summary>
[Column("DownLoadTime")]
public DateTime? DownLoadTime { get; set; }
/// <summary>
/// 是否使用的是数字序列码未使用null,数字序列码true,序列码false
/// </summary>
[Column("IsUseNumber")]
public bool? IsUseNumber { get; set; } = null;
/// <summary>
/// 生成序列码
/// </summary>
public string GenerateSerialNumber()
{
string exclude = "ISOZ";
int? FLength = 6;
var idStr = Radix.ConvertRadix36((ulong)this.Id, exclude.ToCharArray()).PadLeft(FLength ?? 0, '0');
this.SerialNumber = this.SerialNumber + "-" + idStr;
return this.SerialNumber;
}
///// <summary>
///// 生成套装编码 alter by yzh
///// </summary>
//public void GenerateSuitNumber(string sn,)
//{
// string exclude = "ISOZ";
// int? FLength = 6;
// var idStr = Radix.ConvertRadix36((ulong)this.Id, exclude.ToCharArray()).PadLeft(FLength ?? 0, '0');
// this.SerialNumber = this.SerialNumber + "-" + idStr;
//}
/// <summary>
/// 生成时间序列码
/// </summary>
public void GenerateNumberCode()
{
//用户手动输入了 就不自动生成了
if (!string.IsNullOrEmpty(this.NumberCode)) return;
if (this.Number.ToString().Length >= 6)
{
this.NumberCode = this.CreateTime.ToString("yyMMdd") + this.Number.ToString();
return;
}
string idStr = this.Number.ToString();
while (true)
{
idStr = "0" + idStr;
if (idStr.Length >= 6) break;
}
this.NumberCode = this.CreateTime.ToString("yyMMdd") + idStr;
}
/// <summary>
/// 产生套装编码 alter by yzh
/// </summary>
/// <param name="sn"></param>
public void GenerateSuitNumber(string sn)
{
this.SuitNumber = sn;
}
/// <summary>
/// 设置thisNumber
/// </summary>
/// <param name="sn"></param>
public void SetThisNumber(int sn)
{
this.thisNumber = sn;
}
/// <summary>
/// 产生第二个序列号
/// </summary>
/// <param name="sn"></param>
public void GenerateTwoSerialNumber(string sn)
{
this.TwoSerialNumber = sn;
}
/// <summary>
/// 产生第二个数字序列号
/// </summary>
/// <param name="sn"></param>
public void GenerateTwoNumberCode(string sn)
{
this.TwoNumberCode = sn;
}
/// <summary>
/// 打印
/// </summary>
public void Print()
{
//被wms使用的数据不能被打印
if (this.BoxId <= 0 && this.IsUse == true) return;
this.PrintNumber++;
this.PrintTime = DateTime.Now;
}
/// <summary>
/// 下载
/// </summary>
public void DownLoad()
{
this.DownLoadNumber++;
this.DownLoadTime = DateTime.Now;
}
/// <summary>
/// 是否不参与计数0和空代表参与计数1代表不参与计数
/// </summary>
[Column("isNotCount")]
public string? IsNotCount { get; set; } = string.Empty;
/// <summary>
/// 装箱
/// </summary>
/// <param name="boxId"></param>
/// <param name="str"></param>
/// /// <param name="isNotCount">是否不参与计数</param>
public void CompleteBox(int boxId, string str,string isNotCount)
{
//每个序列码延时1毫秒来装箱 这样到时候获取序列码时就可以来排序
Thread.Sleep(1);
this.BoxId = boxId;
this.CompleteCartonTime = DateTime.Now;
this.IsUse = true;
this.IsUseNumber = this.NumberCode.Equals(str) ? true : false;
this.IsNotCount= isNotCount;
}
/// <summary>
/// 解绑箱
/// </summary>
public void UnBox()
{
this.BoxId = 0;
this.CompleteCartonTime = null;
this.IsUse = false;
this.IsUseNumber = null;
}
/// <summary>
/// wms系统获取序列码后 序列码调整为已使用
/// </summary>
public void WmsGet(string str)
{
this.BoxId = -1;
this.IsUse = true;
this.IsUseNumber = this.NumberCode.Equals(str) ? true : false;
}
/// <summary>
/// 修改物料编码
/// </summary>
/// <param name="number"></param>
public Result UpdateMaterial(string number,string MaterialName,string MaterialSpecifications,string MaterialBarCode, string old_Specifications)
{
if (this.IsUse)
return Result.ReFailure($"序列码 {this.SerialNumber} 已被使用,不允许规格转换", 600007);
if (!this.MaterialNumber.Equals(number))
{
this.Old_MaterialNumber = this.MaterialNumber;
this.old_Specifications = old_Specifications;
this.MaterialName= MaterialName;
this.Specifications= MaterialSpecifications;
this.BarCode= MaterialBarCode;
this.MaterialNumber = number;
}
return Result.ReSuccess();
}
}
}