LabelParam.cs 4.4 KB
using CodeLibrary;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;

namespace DeviceLibrary
{
    public class ReelParam
    {
        public static long uid = 0;
        /// <summary>
        /// 创建新出入库信息
        /// </summary>
        /// <param name="wareNo">二维码内容</param>
        /// <param name="platew">宽度</param>
        /// <param name="plateh">高度</param>
        /// <param name="IsNg">是否是入库NG料</param>
        /// <param name="ngMsg">NG消息</param>
        public ReelParam(string wareNo = "", int platew = 0, int plateh = 0, bool _IsNg = false, string ngMsg = "")
        {
            uid++;
            UID = uid.ToString();
            ReeID = WareCode;
            WareCode = wareNo;
            PlateW = platew;
            PlateH = plateh;
            IsNg = _IsNg;
            NgMsg = ngMsg;
            
            PN = "PN";
            ReelDest = ReelDest.Unknow;
        }
        public string UID = "0";
        string _WareCode;
        /// <summary>
        /// 物品二维码信息
        /// </summary>
        public string WareCode
        {
            get => _WareCode;
            set
            {
                _WareCode = value;
                var w = _WareCode.Split('|');
                if (w.Length == 5) {
                    PN = w[0];
                    ReeID = w[3];
                }
            }
        }
        public string ReeID { get; set; }
        public string PN { get; set; }
        /// <summary>
        /// 点料数量
        /// </summary>
        public int QTY { get; set; } = 0;
        public int OrgQTY { get; set; } = 0;
        public List<CodeInfo> codeInfos { get; set; }
        /// <summary>
        /// 料盘高度
        /// </summary>
        public int PlateH { get; set; }
        /// <summary>
        /// 料盘宽度
        /// </summary>
        public int PlateW { get; set; }
        /// <summary>
        /// 是否是入料NG料
        /// </summary>
        public bool IsNg
        {
            get => ReelDest.Equals(ReelDest.NG);
            set
            {
                if (value)
                    ReelDest = ReelDest.NG;
            }
        }
        /// <summary>
        /// 入料NG消息
        /// </summary>
        public string NgMsg = "";
        /// <summary>
        /// 料盘出口
        /// </summary>
        public ReelDest ReelDest { get; set; }


        public ReelParam clone() {
            return this.MemberwiseClone() as ReelParam;
        }

        public string ToStr()
        {
            //var ngStr = IsNg ? "[NG]" : $"[{ReelDest}]";
            var countStr = QTY>0 ? $"[{QTY}]" : "";
            return  $"[{PlateW}x{PlateH}][{ReelDest}]{countStr}[{ReeID}]";
        }
        public string ToDetailStr()
        {
            return $"{DateTime.Now:HH:mm:ss},{ReeID},{PN},{PlateW}x{PlateH},{ReelDest},{NgMsg},{QTY},{WareCode}";
        }
        public string ToSortStr()
        {
            return $"{PN},{PlateW}x{PlateH},{ReelDest},{NgMsg},{QTY}";
        }
        bool islog = false;
        public void logresult() {
            if (!islog) {
                islog = true;
                string countfile = $"CountResult-{DateTime.Now:yyyy-MM-dd}.txt";
                if (!File.Exists(countfile)) {
                    var sw1 = File.AppendText(countfile);
                    sw1.WriteLine($"Date,ReeID,PN,WxH,ReelDest,NgMsg,QTY,2D_Barcode");
                    sw1.Close();
                    sw1.Dispose();
                }

                var sw = File.AppendText(countfile);
                //var sw = File.Open(countfile, FileMode.Append, FileAccess.Write);
               // string s = $"\r\n{ReeID},{PN},{PlateW}x{PlateH},{ReelDest},{NgMsg},{QTY},{WareCode}";
                //var b = Encoding.GetEncoding("gb2312").GetBytes(s);
                //sw.Write(b, 0, b.Length);
                sw.WriteLine($"{DateTime.Now:HH:mm:ss},{ReeID},{PN},{PlateW}x{PlateH},{ReelDest},{NgMsg},{QTY},{WareCode}");
                sw.Close();
                sw.Dispose();
            }
        }
        public string GetImgName()
        {
            string timeName = "-" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".png";
            return PN + "-" + ReeID + "-" + timeName;
        }

    }
    public enum ReelDest { 
        NG,
        MSD,
        Paper,
        String,
        Unknow
    }
}