347 lines
10 KiB
C#
347 lines
10 KiB
C#
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; } = "";
|
||
|
||
///// <summary>
|
||
///// 规格型号
|
||
///// </summary>
|
||
//[Column("Specifications")]
|
||
//public string Specifications { get; set; } = "";
|
||
|
||
///// <summary>
|
||
/////69码
|
||
///// </summary>
|
||
//[Column("BarCode")]
|
||
//public string BarCode { get; set; } = "";
|
||
|
||
/// <summary>
|
||
/// 老物料编码(上一次物料编码)
|
||
/// </summary>
|
||
[Column("Old_MaterialNumber")]
|
||
public string? Old_MaterialNumber { 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)
|
||
{
|
||
if (this.IsUse)
|
||
return Result.ReFailure($"序列码 {this.SerialNumber} 已被使用,不允许规格转换", 600007);
|
||
if (!this.MaterialNumber.Equals(number))
|
||
{
|
||
this.Old_MaterialNumber = this.MaterialNumber;
|
||
this.MaterialNumber = number;
|
||
}
|
||
|
||
return Result.ReSuccess();
|
||
}
|
||
}
|
||
}
|