197 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			197 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Linq;
 | |
| using System.Text;
 | |
| using System.Threading.Tasks;
 | |
| 
 | |
| namespace StdLabelPrint
 | |
| {
 | |
|     public class CAmkorSTDBarcode
 | |
|     {
 | |
|         public string Message { get; private set; }
 | |
|         public Boolean isValid = false;
 | |
|         public string SID { get;  set; }
 | |
|         public string VLOT { get;  set; }
 | |
|         public string RID { get;  set; }
 | |
|         public string MFGDate { get; set; }
 | |
|         //public string MFGDateRaw { get; set; }
 | |
|         public string VENDERNAME { get; set; }
 | |
|         public string PARTNO { get; set; }
 | |
|         public int QTY { get; set; }
 | |
|         public string RAW { get; set; }
 | |
|         public Boolean DateError { get; private set; }
 | |
|         public Boolean DisposalCode { get; set; }
 | |
| 
 | |
|         public Boolean NewLen15Barcode { get; set; }
 | |
| 
 | |
|         public void CopyTo(CAmkorSTDBarcode obj)
 | |
|         {
 | |
|             if (obj == null) obj = new CAmkorSTDBarcode();
 | |
|             else obj.Clear();
 | |
|             obj.Message = this.Message;
 | |
|             obj.isValid = this.isValid;
 | |
|             obj.SID = this.SID;
 | |
|             obj.VLOT = this.VLOT;
 | |
|             obj.RID = this.RID;
 | |
|             obj.MFGDate = this.MFGDate;
 | |
|             obj.VENDERNAME = this.VENDERNAME;
 | |
|             obj.PARTNO = this.PARTNO;
 | |
|             obj.QTY = this.QTY;
 | |
|             obj.RAW = this.RAW;
 | |
|             obj.DateError = this.DateError;
 | |
|             obj.DisposalCode = this.DisposalCode;
 | |
|             obj.NewLen15Barcode = this.NewLen15Barcode;
 | |
|         }
 | |
|         public CAmkorSTDBarcode()
 | |
|         {
 | |
|             Clear();
 | |
|         }
 | |
|         public void Clear()
 | |
|         {
 | |
|             this.DisposalCode = false;
 | |
|             this.NewLen15Barcode = false;
 | |
|             this.Message = string.Empty;
 | |
|             this.isValid = false;
 | |
|             this.SID = string.Empty;
 | |
|             this.VLOT = string.Empty;
 | |
|             this.RID = string.Empty;
 | |
|             //this.MFGDateRaw = string.Empty;
 | |
|             this.MFGDate = string.Empty;// new DateTime(1982, 11, 23);
 | |
|             this.VENDERNAME = string.Empty;
 | |
|             this.PARTNO = string.Empty;
 | |
|             this.QTY = 0;
 | |
|             this.RAW = string.Empty;
 | |
|             DateError = false;
 | |
|         }
 | |
|         public CAmkorSTDBarcode(string raw)
 | |
|         {
 | |
|             SetBarcode(raw);
 | |
|         }
 | |
|         public void SetBarcodeDemo()
 | |
|         {
 | |
|             //SetBarcode("101410653;AG64B3W;SAMSUNG;20000;AG64B3W0031;19000101;");
 | |
|             SetBarcode("101410653;AG64B3W;SAMSUNG;20000;AG64B3W0031;19000101;");
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 현재 속성의 값을 가지고 바코드값을 반환합니다.
 | |
|         /// 원본 바코드 값을 확인하려면 RAW 속성을 확인하세요
 | |
|         /// </summary>
 | |
|         /// <returns></returns>
 | |
|         public string GetBarcode()
 | |
|         {
 | |
|             if (string.IsNullOrWhiteSpace(PARTNO))
 | |
|                 return string.Format("{0};{1};{2};{3};{4};{5}",
 | |
|                     SID, VLOT, VENDERNAME, QTY, RID, MFGDate);
 | |
|             else
 | |
|                 return string.Format("{0};{1};{2};{3};{4};{5};{6}",
 | |
|               SID, VLOT, VENDERNAME, QTY, RID, MFGDate, PARTNO);
 | |
|         }
 | |
|         public void SetBarcode(string raw)
 | |
|         {
 | |
|             //101416868;01A3KX;KYOCERA;20000;RC00014A225001I;20220511;N/A
 | |
| 
 | |
| 
 | |
|             isValid = false;
 | |
| 
 | |
|             this.RAW = raw;
 | |
|             var buf = raw.Split(';');
 | |
|             if (buf.Length < 5)
 | |
|             {
 | |
|                 isValid = false;
 | |
|                 Message = "buffer len error : " + raw;
 | |
|                 return;
 | |
|             }
 | |
|             decimal vSID = 0;
 | |
|             double vQty = 0;
 | |
|             if (decimal.TryParse(buf[0], out vSID) == false) return;
 | |
| 
 | |
|             this.SID = buf[0];
 | |
|             this.VLOT = buf[1];
 | |
| 
 | |
| 
 | |
|             //101인경우에는 3번 항목이 벤더네임이다.
 | |
|             //103은 partno 값이 들어간다
 | |
|             if (this.SID.StartsWith("103"))
 | |
|             {
 | |
|                 if (buf.Length == 7)    //구형바코드
 | |
|                 {
 | |
|                     this.VENDERNAME = buf[2];
 | |
|                     this.PARTNO = string.Empty;
 | |
|                     Message = "폐기된 103코드 입니다";
 | |
|                     DisposalCode = true;
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     //05월 신형은 파트번호가 들어있다
 | |
|                     this.PARTNO = buf[2];
 | |
|                     this.VENDERNAME = string.Empty;
 | |
|                     DisposalCode = false;
 | |
|                 }
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 this.VENDERNAME = buf[2];
 | |
|                 this.PARTNO = string.Empty;
 | |
|                 DisposalCode = false;
 | |
|             }
 | |
| 
 | |
|             //일부 데이터를 변조한다  210709
 | |
|             if (this.VENDERNAME == "K118165") this.VENDERNAME = "DELTA";
 | |
|             else if (this.VENDERNAME == "K113986") this.VENDERNAME = "DREAM CHIP";
 | |
| 
 | |
| 
 | |
|             if (double.TryParse(buf[3], out vQty) == false) return;
 | |
|             this.QTY = (int)vQty;
 | |
| 
 | |
|             this.RID = buf[4];
 | |
|             //DateTime vMFGDate;
 | |
|             DateError = false;
 | |
|             this.MFGDate = buf[5].Trim();
 | |
| 
 | |
|             //신형바코드는 angle 에서 제외하려고 판정한다
 | |
|             if (this.RID.Length == 15 && this.RID.StartsWith("RC")) //210703
 | |
|                 this.NewLen15Barcode = true;
 | |
|             else
 | |
|                 this.NewLen15Barcode = false;
 | |
| 
 | |
| 
 | |
|             //if (buf[5].Length == 4 && this.SUPPLY == "SAMSUNG")
 | |
|             //{
 | |
|             //    //삼성은 주차로 한다
 | |
|             //    DateError = true;
 | |
|             //    Message = "Date Error(samsung)";
 | |
|             //    MFGDate = new DateTime(2000+ int.Parse( buf[5].Substring(0,2) ), 1, 1);
 | |
| 
 | |
|             //    //DateTime.Now.
 | |
|             //}
 | |
|             //else if (buf[5].Length != 8)
 | |
|             //{
 | |
|             //    Message = "Date value Length Error : " + buf[5];
 | |
|             //    MFGDate = new DateTime(1900, 1, 1);
 | |
|             //    return;
 | |
|             //}
 | |
|             //else
 | |
|             //{
 | |
|             //    buf[5] = buf[5].Substring(0, 4) + "-" + buf[5].Substring(4, 2) + "-" + buf[5].Substring(6, 2);
 | |
|             //    if (DateTime.TryParse(buf[5], out vMFGDate) == false) return;
 | |
|             //    MFGDate = vMFGDate;
 | |
|             //}
 | |
| 
 | |
|             //마지막 요소가 PartNo 이다. (아직 이코드는 본적 없음)
 | |
|             if (this.SID.StartsWith("103") && buf.Length == 7)   //구형번호이다
 | |
|             {
 | |
|                 this.PARTNO = buf[6];
 | |
|             }
 | |
| 
 | |
|             if (buf.Length == 7 && string.IsNullOrEmpty(this.PARTNO))
 | |
|             {
 | |
|                 this.PARTNO = buf[6];
 | |
|             }
 | |
|             //else this.PARTNO = string.Empty;
 | |
| 
 | |
|             isValid = true;
 | |
|         }
 | |
|     }
 | |
| }
 | 
