Initial commit
This commit is contained in:
		
							
								
								
									
										187
									
								
								Handler/Project_form2/Class/AmkorReelID.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										187
									
								
								Handler/Project_form2/Class/AmkorReelID.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,187 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace Project | ||||
| { | ||||
|     public static class AmkorReelID | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// 앰코 ID형태인지 확인합니다. | ||||
|         /// </summary> | ||||
|         /// <param name="rid"></param> | ||||
|         /// <param name="yy"></param> | ||||
|         /// <param name="m"></param> | ||||
|         /// <returns></returns> | ||||
|         public static Boolean IsValidID(string rid, out string yy, out string m) | ||||
|         { | ||||
|             yy = string.Empty; | ||||
|             m = string.Empty; | ||||
|             if (rid.Length != 15) return false; | ||||
|             try | ||||
|             { | ||||
|                 var custCost = rid.Substring(2, 4); | ||||
|                 var site = "K" + rid.Substring(6, 1); | ||||
|                 var mc = rid.Substring(7, 1); | ||||
|                 yy = rid.Substring(8, 2); | ||||
|                 m = rid.Substring(10, 1); | ||||
|                 var sn = rid.Substring(11, 4); | ||||
|                 return true; | ||||
|             } | ||||
|             catch | ||||
|             { | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         public static string MakeReelID(string customercode, string ym) | ||||
|         { | ||||
|             if (customercode.Length != 4) | ||||
|             { | ||||
|                 return String.Empty;// | ||||
|                                     //throw new Exception("Customer 코드는 4자리 입니다"); | ||||
|             } | ||||
|             if (ym.Length != 3) | ||||
|             { | ||||
|                 return string.Empty;// | ||||
|                                     //throw new Exception("Ym 코드는 3자리 입니다"); | ||||
|             } | ||||
|             var rid = "RC{CUST}{DEVLOC}{DEVID}{YM}"; | ||||
|             rid = rid.Replace("{DEVLOC}", Pub.setting.ReelIdDeviceLoc); | ||||
|             rid = rid.Replace("{DEVID}", Pub.setting.ReelIdDeviceID); | ||||
|             rid = rid.Replace("{CUST}", customercode); | ||||
|             rid = rid.Replace("{YM}", ym); | ||||
|             rid += GetNextSNbyYM(ym); | ||||
|             return rid; | ||||
|         } | ||||
|  | ||||
|  | ||||
|         /// <summary> | ||||
|         /// 입력된 월 기준으로 시리얼 번호를 생성합니다 | ||||
|         /// </summary> | ||||
|         /// <param name="ym">21년 1월의 경우 211,  10월의 경우 21A 식으로 표현</param> | ||||
|         /// <param name="removeR">1,2번 위치에 R기호를 제거 할 것인가?</param> | ||||
|         /// <returns></returns> | ||||
|         public static string GetNextSNbyYM(string ym) | ||||
|         { | ||||
|             //서버에서 자료를 조회해서 처리한다. | ||||
|             var db = new EEEntities(); | ||||
|             var dr = db.Component_Reel_Result.Where(t => t.PDATE == ym && t.PDATE.Contains("R") == false).OrderByDescending(t => t.RSN).FirstOrDefault(); | ||||
|             if (dr == null) return "0001"; //처음쓰는 자료인다. | ||||
|             var curSN = dr.RSN; | ||||
|             return GetNextSNbySN(curSN); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// 해당월의 리턴릴의 번호를 생성한다 | ||||
|         /// </summary> | ||||
|         /// <param name="ym"></param> | ||||
|         /// <returns></returns> | ||||
|         public static string GetNextSNbyYM_Return(string ym) | ||||
|         { | ||||
|             //서버에서 자료를 조회해서 처리한다. | ||||
|             var db = new EEEntities(); | ||||
|             var dr = db.Component_Reel_Result.Where(t => t.PDATE == ym && t.PDATE.StartsWith("R")).OrderByDescending(t => t.RSN).FirstOrDefault(); | ||||
|             if (dr == null) return "R001"; //처음쓰는 자료인다. | ||||
|             var curSN = dr.RSN; | ||||
|             return GetNextSNbySN_Return(curSN); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// 중복릴의 다은번호를 생성한다 | ||||
|         /// </summary> | ||||
|         /// <param name="ym"></param> | ||||
|         /// <returns></returns> | ||||
|         public static string GetNextSNbyYM_Dup(string ym) | ||||
|         { | ||||
|             //서버에서 자료를 조회해서 처리한다. | ||||
|             var db = new EEEntities(); | ||||
|             var dr = db.Component_Reel_Result.Where(t => t.PDATE == ym && t.PDATE.StartsWith("0R")).OrderByDescending(t => t.RSN).FirstOrDefault(); | ||||
|             if (dr == null) return "0R01"; //처음쓰는 자료인다. | ||||
|             var curSN = dr.RSN; | ||||
|             return GetNextSNbySN_Dup(curSN); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// 입력한 시리얼 번호 이후의 번호를 생성합니다(0000~ZZZZ) 까지의 데이터를 가지며 2번쨰짜리까지는 R을 사용하지 못한다 | ||||
|         /// </summary> | ||||
|         /// <param name="sn">기준 시리얼번호 4자리</param> | ||||
|         /// <param name="removeR"></param> | ||||
|         /// <returns></returns> | ||||
|         public static string GetNextSNbySN(string sn) | ||||
|         { | ||||
|             //서버에서 자료를 조회해서 처리한다. | ||||
|             string curSN = sn; | ||||
|             if (sn.Length != 4) throw new Exception("s/n length 4"); | ||||
|  | ||||
|             var buffer = curSN.ToCharArray(); | ||||
|             for (int i = buffer.Length; i > 0; i--) | ||||
|             { | ||||
|                 if (i <= 2) | ||||
|                     if (buffer[i - 1] == 'Q') buffer[i - 1] = 'R'; | ||||
|  | ||||
|                 if (buffer[i - 1] == '9') { buffer[i - 1] = 'A'; break; } | ||||
|                 else if (buffer[i - 1] == 'Z') buffer[i - 1] = '0'; | ||||
|                 else { buffer[i - 1] = (char)((byte)buffer[i - 1] + 1); break; } | ||||
|             } | ||||
|             return string.Join("", buffer); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// 리턴릴의 다음 번호 생성 R로시작하며 000~ZZZ 영역을 가진다(제외문자 없음) | ||||
|         /// </summary> | ||||
|         /// <param name="sn"></param> | ||||
|         /// <returns></returns> | ||||
|         public static string GetNextSNbySN_Return(string sn) | ||||
|         { | ||||
|             //서버에서 자료를 조회해서 처리한다. | ||||
|             string curSN = sn; | ||||
|             if (sn.Length != 4) throw new Exception("s/n length 4"); | ||||
|  | ||||
|             var buffer = curSN.ToCharArray(); | ||||
|             for (int i = buffer.Length; i > 1; i--) | ||||
|             { | ||||
|                 //if (i <= 2)  //1,2번 영역에는 R값이 들어가면 안된다. | ||||
|                 //{ | ||||
|                 //	if (buffer[i - 1] == 'Q') buffer[i - 1] = 'R'; | ||||
|                 //} | ||||
|  | ||||
|                 if (buffer[i - 1] == '9') { buffer[i - 1] = 'A'; break; } | ||||
|                 else if (buffer[i - 1] == 'Z') buffer[i - 1] = '0'; | ||||
|                 else { buffer[i - 1] = (char)((byte)buffer[i - 1] + 1); break; } | ||||
|             } | ||||
|             buffer[0] = 'R'; | ||||
|             return string.Join("", buffer); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// 중복릴의 다음 번호 생성(0R로 시작하며 00~ZZ의 영역을 가진다) | ||||
|         /// </summary> | ||||
|         /// <param name="sn"></param> | ||||
|         /// <returns></returns> | ||||
|         public static string GetNextSNbySN_Dup(string sn) | ||||
|         { | ||||
|             //서버에서 자료를 조회해서 처리한다. | ||||
|             string curSN = sn; | ||||
|             if (sn.Length != 4) throw new Exception("s/n length 4"); | ||||
|  | ||||
|             var buffer = curSN.ToCharArray(); | ||||
|             for (int i = buffer.Length; i > 2; i--) | ||||
|             { | ||||
|                 //if (i <= 2)  //1,2번 영역에는 R값이 들어가면 안된다. | ||||
|                 //{ | ||||
|                 //	if (buffer[i - 1] == 'Q') buffer[i - 1] = 'R'; | ||||
|                 //} | ||||
|  | ||||
|                 if (buffer[i - 1] == '9') { buffer[i - 1] = 'A'; break; } | ||||
|                 else if (buffer[i - 1] == 'Z') buffer[i - 1] = '0'; | ||||
|                 else { buffer[i - 1] = (char)((byte)buffer[i - 1] + 1); break; } | ||||
|             } | ||||
|             buffer[0] = '0'; | ||||
|             buffer[1] = 'R'; | ||||
|             return string.Join("", buffer); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 ChiKyun Kim
					ChiKyun Kim