|
|
@ -60,7 +60,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 取得出貨序號
|
|
|
|
/// 取得出貨序號(單個)
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="itemNo">料號</param>
|
|
|
|
/// <param name="lotNo">生產序號</param>
|
|
|
@ -189,6 +189,251 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 取得出貨序號(多個)
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="itemNo">料號</param>
|
|
|
|
/// <param name="lotNo">生產序號</param>
|
|
|
|
/// <param name="num">生產數量</param>
|
|
|
|
/// <returns></returns>
|
|
|
|
[HttpGet("ByQurey/{itemNo}/{lotNo}/{num}")] |
|
|
|
public async Task<ResultModel<string>> GetSerialRuleByQurey(string itemNo, string lotNo,int num) |
|
|
|
{ |
|
|
|
IQueryable<SerialRule> q = _context.SerialRules; |
|
|
|
ResultModel<string> result = new ResultModel<string>(); |
|
|
|
var serialRule = await q.Where(p => p.ItemNo == itemNo).FirstOrDefaultAsync(); |
|
|
|
var serialRuleNew = serialRule; |
|
|
|
var strRule = ""; |
|
|
|
var serial = ""; |
|
|
|
var minSerial = ""; |
|
|
|
var maxSerial=""; |
|
|
|
if (num <= 0) |
|
|
|
{ |
|
|
|
result.Success = false; |
|
|
|
result.Msg = "請輸入出貨數量!!"; |
|
|
|
return result; |
|
|
|
|
|
|
|
} |
|
|
|
if (serialRule == null || itemNo.ToUpper()=="OTHER") |
|
|
|
{ |
|
|
|
itemNo = "OTHER"; |
|
|
|
if (lotNo.Length != 2) |
|
|
|
{ |
|
|
|
result.Success = false; |
|
|
|
result.Msg = "前置碼長度為2"; |
|
|
|
//result.Msg = "無料號對應出貨序號規則";
|
|
|
|
return result; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
serialRule = await q.Where(p => p.ItemNo == "OTHER").FirstOrDefaultAsync(); |
|
|
|
serialRuleNew = serialRule; |
|
|
|
strRule = serialRule.Rule.ToUpper(); |
|
|
|
serial = serialRule.Rule; |
|
|
|
|
|
|
|
if (strRule.Contains("[SS]")) |
|
|
|
{ |
|
|
|
serial = serial.Replace("[SS]", lotNo); |
|
|
|
} |
|
|
|
if (strRule.Contains("[WW]")) |
|
|
|
{ |
|
|
|
System.Globalization.GregorianCalendar gc = new System.Globalization.GregorianCalendar(); |
|
|
|
DateTime datetime = DateTime.Now; |
|
|
|
int week = gc.GetWeekOfYear(datetime, System.Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Sunday); |
|
|
|
serial = serial.Replace("[WW]", week.ToString()); |
|
|
|
|
|
|
|
if (serialRule.WNum != week) |
|
|
|
{ |
|
|
|
serialRuleNew.WNum = week; |
|
|
|
if (serialRule.SnNum > 0) |
|
|
|
serialRuleNew.SnNum = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
if (strRule.Contains("[YY]"))//年份後兩碼
|
|
|
|
{ |
|
|
|
var strYY = System.DateTime.Now.ToString("yy"); |
|
|
|
if (serialRule.YNum.ToString() != System.DateTime.Now.ToString("yy")) |
|
|
|
{ |
|
|
|
serialRuleNew.YNum = int.Parse(System.DateTime.Now.ToString("yy")); |
|
|
|
if (serialRule.SnNum > 0) |
|
|
|
serialRuleNew.SnNum = 0; |
|
|
|
} |
|
|
|
strYY = strYY.Replace("0", "Z"); |
|
|
|
strYY = strYY.Replace("1", "A"); |
|
|
|
strYY = strYY.Replace("2", "B"); |
|
|
|
strYY = strYY.Replace("3", "C"); |
|
|
|
strYY = strYY.Replace("4", "D"); |
|
|
|
strYY = strYY.Replace("5", "E"); |
|
|
|
strYY = strYY.Replace("6", "F"); |
|
|
|
strYY = strYY.Replace("7", "G"); |
|
|
|
strYY = strYY.Replace("8", "H"); |
|
|
|
strYY = strYY.Replace("9", "J"); |
|
|
|
|
|
|
|
serial = serial.Replace("[YY]", strYY); |
|
|
|
} |
|
|
|
if (strRule.Contains("[SN5]")) |
|
|
|
{ |
|
|
|
serialRuleNew.SnNum++; |
|
|
|
if (num > 1) |
|
|
|
{ |
|
|
|
minSerial = serial; |
|
|
|
maxSerial = serial; |
|
|
|
minSerial = minSerial.Replace("[SN5]", serialRuleNew.SnNum.ToString("00000")); |
|
|
|
serialRuleNew.SnNum = serialRuleNew.SnNum + num - 1; |
|
|
|
maxSerial = maxSerial.Replace("[SN5]", serialRuleNew.SnNum.ToString("00000")); |
|
|
|
serial = minSerial + "~" + maxSerial; |
|
|
|
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
serial = serial.Replace("[SN5]", serialRuleNew.SnNum.ToString("00000")); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
if (serialRule.LotLen != 0) |
|
|
|
{ |
|
|
|
if (lotNo == null) |
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
result.Success = false; |
|
|
|
result.Msg = "所輸入LOT字數與規則不符合"; |
|
|
|
return result; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
if (serialRule.LotLen != lotNo.Length) |
|
|
|
{ |
|
|
|
result.Success = false; |
|
|
|
result.Msg = "所輸入LOT字數與規則不符合"; |
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
strRule = serialRule.Rule.ToUpper(); |
|
|
|
serial = serialRule.Rule; |
|
|
|
if (strRule.Contains("[YYYY]")) //年份
|
|
|
|
{ |
|
|
|
serial = serial.Replace("[YYYY]", System.DateTime.Now.ToString("yyyy")); |
|
|
|
if (serialRule.YNum != System.DateTime.Now.Year) |
|
|
|
{ |
|
|
|
serialRuleNew.YNum = System.DateTime.Now.Year; |
|
|
|
if (serialRule.SnNum > 0) |
|
|
|
serialRuleNew.SnNum = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
if (strRule.Contains("[YY]"))//年份後兩碼
|
|
|
|
{ |
|
|
|
serial = serial.Replace("[YY]", System.DateTime.Now.ToString("yy")); |
|
|
|
if (serialRule.YNum.ToString() != System.DateTime.Now.ToString("yy")) |
|
|
|
{ |
|
|
|
serialRuleNew.YNum = int.Parse(System.DateTime.Now.ToString("yy")); |
|
|
|
if (serialRule.SnNum > 0) |
|
|
|
serialRuleNew.SnNum = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
if (strRule.Contains("[MM]"))//月份
|
|
|
|
{ |
|
|
|
serial = serial.Replace("[MM]", System.DateTime.Now.ToString("MM")); |
|
|
|
|
|
|
|
if (serialRule.MNum != System.DateTime.Now.Month) |
|
|
|
{ |
|
|
|
serialRuleNew.MNum = System.DateTime.Now.Month; |
|
|
|
if (serialRule.SnNum > 0) |
|
|
|
serialRuleNew.SnNum = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
if (strRule.Contains("[WW]")) |
|
|
|
{ |
|
|
|
System.Globalization.GregorianCalendar gc = new System.Globalization.GregorianCalendar(); |
|
|
|
DateTime datetime = DateTime.Now; |
|
|
|
int week = gc.GetWeekOfYear(datetime, System.Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Sunday); |
|
|
|
serial = serial.Replace("[WW]", week.ToString()); |
|
|
|
|
|
|
|
if (serialRule.WNum != week) |
|
|
|
{ |
|
|
|
serialRuleNew.WNum = week; |
|
|
|
if (serialRule.SnNum > 0) |
|
|
|
serialRuleNew.SnNum = 0; |
|
|
|
} |
|
|
|
} |
|
|
|
if (strRule.Contains("[LOT3]")) |
|
|
|
{ |
|
|
|
serial = serial.Replace("[LOT3]", lotNo); |
|
|
|
} |
|
|
|
if (strRule.Contains("[LOT4]")) |
|
|
|
{ |
|
|
|
serial = serial.Replace("[LOT4]", lotNo); |
|
|
|
} |
|
|
|
if (strRule.Contains("[SN3]")) |
|
|
|
{ |
|
|
|
|
|
|
|
serialRuleNew.SnNum++; |
|
|
|
if (num > 1) |
|
|
|
{ |
|
|
|
minSerial = serial; |
|
|
|
maxSerial = serial; |
|
|
|
minSerial = minSerial.Replace("[SN3]", serialRuleNew.SnNum.ToString("00000")); |
|
|
|
serialRuleNew.SnNum = serialRuleNew.SnNum + num - 1; |
|
|
|
maxSerial = maxSerial.Replace("[SN3]", serialRuleNew.SnNum.ToString("00000")); |
|
|
|
serial = minSerial + "~" + maxSerial; |
|
|
|
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
serial = serial.Replace("[SN3]", serialRuleNew.SnNum.ToString("00000")); |
|
|
|
} |
|
|
|
} |
|
|
|
if (strRule.Contains("[SN4]")) |
|
|
|
{ |
|
|
|
serialRuleNew.SnNum++; |
|
|
|
if (num > 1) |
|
|
|
{ |
|
|
|
minSerial = serial; |
|
|
|
maxSerial = serial; |
|
|
|
minSerial = minSerial.Replace("[SN4]", serialRuleNew.SnNum.ToString("00000")); |
|
|
|
serialRuleNew.SnNum = serialRuleNew.SnNum + num - 1; |
|
|
|
maxSerial = maxSerial.Replace("[SN4]", serialRuleNew.SnNum.ToString("00000")); |
|
|
|
serial = minSerial + "~" + maxSerial; |
|
|
|
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
serial = serial.Replace("[SN4]", serialRuleNew.SnNum.ToString("00000")); |
|
|
|
} |
|
|
|
} |
|
|
|
//if (strRule.Contains("[MM1]"))//月份縮寫
|
|
|
|
//{
|
|
|
|
// serial = strRule.Replace("[MM]", System.DateTime.Now.ToString("MMM"));
|
|
|
|
//}
|
|
|
|
|
|
|
|
} |
|
|
|
_context.Entry(serialRuleNew).State = EntityState.Modified; |
|
|
|
try |
|
|
|
{ |
|
|
|
await _context.SaveChangesAsync(); |
|
|
|
result.Success = true; |
|
|
|
result.Msg = serial; |
|
|
|
|
|
|
|
} |
|
|
|
catch (Exception ex) |
|
|
|
{ |
|
|
|
result.Success = false; |
|
|
|
result.Msg = ex.InnerException.Message; |
|
|
|
} |
|
|
|
return result; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 取得樣本序號
|
|
|
|
/// </summary>
|
|
|
|