using Autofac.Features.Metadata;
|
using MailKit.Search;
|
using Microsoft.IdentityModel.Tokens;
|
using Rhea.Common;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Globalization;
|
using System.Linq;
|
using System.Text;
|
using System.Text.RegularExpressions;
|
using static Tiger.Business.WMS.Barcode;
|
|
namespace Tiger.Business.WMS
|
{
|
/// <summary>
|
/// 条码分析基类
|
/// </summary>
|
public class YadaBarcode : BarcodeAnalysis
|
{
|
/// <summary>
|
/// 条码分析
|
/// </summary>
|
/// <param name="metaSn"></param>
|
public override Result<Barcode> Analyse(Barcode barcode)
|
{
|
var result = new Result<Barcode>(Result.Flags.Failed);
|
Barcode = barcode;
|
|
if (!string.IsNullOrEmpty(Barcode.MetaSn))
|
{
|
string[] parts = (Barcode.MetaSn ?? "").Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
|
//箱条码
|
if (Barcode.MetaSn.StartsWith("Carton/"))
|
{
|
//收货箱条码:Carton/YDASN241000433/10/17010505.0064.00/ASN241000433/13957
|
//规则:Carton/单号/行号/料号/批号/流水号
|
if (parts.Length == 6)
|
{
|
Barcode.OrderNo = parts[1];
|
Barcode.OrderLine = parts[2];
|
Barcode.ItemCode = parts[3];
|
Barcode.LotNo = parts[4];
|
Barcode.SerialNoStr = parts[5];
|
Barcode.Type = Types.OuterPackage;
|
Barcode.ItemType = ItemTypes.RawMaterial;
|
|
result.Flag = Result.Flags.Success;
|
}
|
}
|
//其他条码
|
else
|
{
|
//收货条码:YDASN241200964/10/12010102.0011.00/ASN241200964/1
|
//杂收条码:YDZS241200607/10/10150102.2226.00/ASN24120012750/0001
|
//规则:单号/行号/料号/批号/流水号
|
if (parts.Length == 5)// && (Barcode.MetaSn.StartsWith("ASN") || Barcode.MetaSn.StartsWith("YDZS") || Barcode.MetaSn.StartsWith("YDASN")))
|
{
|
Barcode.OrderNo = parts[0];
|
Barcode.OrderLine = parts[1];
|
Barcode.ItemCode = parts[2];
|
Barcode.LotNo = parts[3];
|
Barcode.SerialNoStr = parts[4];
|
Barcode.Type = Types.MiniPackage;
|
Barcode.ItemType = ItemTypes.RawMaterial;
|
|
result.Flag = Result.Flags.Success;
|
}
|
//调入条码:101/YDDR241200924/10/13060306.0008.00/ASN24090127310/0001
|
//形态转换条码:101/YDZH231000028/10/32020101.0005.00/23001034/0001
|
//规则:组织/单号/行号/料号/批号/流水号
|
if (parts.Length == 6)// && (Barcode.MetaSn.StartsWith("YDDR") || Barcode.MetaSn.StartsWith("YDZH")))
|
{
|
Barcode.Organization = parts[0];
|
Barcode.OrderNo = parts[1];
|
Barcode.OrderLine = parts[2];
|
Barcode.ItemCode = parts[3];
|
Barcode.LotNo = parts[4];
|
Barcode.SerialNoStr = parts[5];
|
Barcode.Type = Types.MiniPackage;
|
Barcode.ItemType = ItemTypes.RawMaterial;
|
|
result.Flag = Result.Flags.Success;
|
}
|
//收货单:YDRC240801351/10/10030202.0013.02/7/
|
//规则:单号/行号/料号/流水号/
|
if (parts.Length == 4 && parts[2].Contains("."))
|
{
|
Barcode.OrderNo = parts[0];
|
Barcode.OrderLine = parts[1];
|
Barcode.ItemCode = parts[2];
|
Barcode.SerialNoStr = parts[3];
|
Barcode.Type = Types.MiniPackage;
|
Barcode.ItemType = ItemTypes.RawMaterial;
|
|
result.Flag = Result.Flags.Success;
|
}
|
//期初库存条码补打:10150102.0655.00/108444-1-230/168A05/10101/
|
//规则:料号/批号/库位/存储地点/
|
if (parts.Length == 4 && parts[0].Contains("."))
|
{
|
Barcode.ItemCode = parts[0];
|
Barcode.LotNo = parts[1];
|
Barcode.Location = parts[2];
|
Barcode.Warehouse = parts[3];
|
Barcode.Type = Types.MiniPackage;
|
Barcode.ItemType = ItemTypes.RawMaterial;
|
|
result.Flag = Result.Flags.Success;
|
}
|
//期初条码:10150102.0655.00/108444-1-230207/000001
|
//规则:料号/批号/流水号
|
if (parts.Length == 3)
|
{
|
Barcode.ItemCode = parts[0];
|
Barcode.LotNo = parts[1];
|
Barcode.SerialNoStr = parts[2];
|
Barcode.Type = Types.MiniPackage;
|
Barcode.ItemType = ItemTypes.RawMaterial;
|
|
result.Flag = Result.Flags.Success;
|
}
|
}
|
}
|
|
result.Data = Barcode;
|
return result;
|
}
|
|
}//endClass
|
}
|