|
|
@ -522,6 +522,16 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES |
|
|
|
[HttpGet("ByQurey/{itemNo}/{lotNo}/{num}/{wipShcDate}")] |
|
|
|
public async Task<ResultModel<string>> GetSerialRuleByQurey(string itemNo, string lotNo, int num, DateTime wipShcDate) |
|
|
|
{ |
|
|
|
/* 非標準品的取號規則(不同ITEM 相同規則時) |
|
|
|
1、使用item_no 找到規則 |
|
|
|
2、使用規則+Y+M+W+Lot 找Detail 相同之所有資料,取之中之SN_Num的最大值 |
|
|
|
3、以最大值 +1 去產生取號工單的區間值 |
|
|
|
4、更新Detail 相同規則+Y+M+W+Lot的所有資料最大值 |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IQueryable<SerialRule> q = _context.SerialRules; |
|
|
|
IQueryable<SerialRuleDetail> q_Detail = _context.SerialRuleDetails; |
|
|
|
|
|
|
@ -668,8 +678,20 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES |
|
|
|
|
|
|
|
} |
|
|
|
q_Detail = _context.SerialRuleDetails; |
|
|
|
var SerialRuleDetail = await q_Detail.Where(w => w.ItemNo == itemNo && w.YNum == serialRuleDetail_NEW.YNum && w.MNum == serialRuleDetail_NEW.MNum && w.WNum == serialRuleDetail_NEW.WNum && w.LotNum == serialRuleDetail_NEW.LotNum).FirstOrDefaultAsync(); |
|
|
|
var SerialRuleDetail = q_Detail.Where(w => w.ItemNo == itemNo && w.YNum == serialRuleDetail_NEW.YNum && w.MNum == serialRuleDetail_NEW.MNum && w.WNum == serialRuleDetail_NEW.WNum && w.LotNum == serialRuleDetail_NEW.LotNum).FirstOrDefault(); |
|
|
|
|
|
|
|
SerialRuleDetail.UpdateDate = System.DateTime.Now; |
|
|
|
|
|
|
|
|
|
|
|
var SerialRuleDetail_All = q_Detail.Where(w => w.Rule == serialRuleDetail_NEW.Rule && w.YNum == serialRuleDetail_NEW.YNum && w.MNum == serialRuleDetail_NEW.MNum && w.WNum == serialRuleDetail_NEW.WNum && w.LotNum == serialRuleDetail_NEW.LotNum); |
|
|
|
|
|
|
|
if (! itemNo.StartsWith("OTHER")) |
|
|
|
{ |
|
|
|
//抓取所有相同參數的值
|
|
|
|
int Max_SnNum = SerialRuleDetail_All.Max(s => s.SnNum); //抓取相同參數的SN_Num 最大數值取值,避免有不一致一情況
|
|
|
|
SerialRuleDetail.SnNum = Max_SnNum; |
|
|
|
} |
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
@ -706,6 +728,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES |
|
|
|
} |
|
|
|
if (strRule.Contains("[SN5]")) |
|
|
|
{ |
|
|
|
|
|
|
|
SerialRuleDetail.SnNum++; |
|
|
|
if (num > 1) |
|
|
|
{ |
|
|
@ -832,8 +855,30 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES |
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region 修改serial_rule_detail 的記錄
|
|
|
|
|
|
|
|
if (itemNo.StartsWith("OTHER")) |
|
|
|
{ |
|
|
|
_context.Entry(SerialRuleDetail).State = EntityState.Modified; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
#region 同步更改其他相同Rule、YY、MM、WW、Lot 的最大值流水號SN_Num (不同item會有相同rule,且流水號為累加)
|
|
|
|
foreach (var item in SerialRuleDetail_All) |
|
|
|
{ |
|
|
|
item.SnNum = SerialRuleDetail.SnNum; |
|
|
|
item.UpdateDate = SerialRuleDetail.UpdateDate; |
|
|
|
_context.Entry(item).State = EntityState.Modified; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
//修改Serial_Rule_Detail
|
|
|
|
_context.Entry(SerialRuleDetail).State = EntityState.Modified; |
|
|
|
|
|
|
|
try |
|
|
|
{ |
|
|
|
await _context.SaveChangesAsync(); |
|
|
@ -1025,6 +1070,112 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 取得樣本序號,寫入Serial_Rule_Detail(多個)
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="num">數量</param>
|
|
|
|
/// <returns></returns>
|
|
|
|
[HttpGet("Sample/num_new/{num}")] |
|
|
|
public async Task<ResultModel<string>> GetSampleSerialRulesNEW(int num) |
|
|
|
{ |
|
|
|
IQueryable<SerialRule> q = _context.SerialRules; |
|
|
|
IQueryable<SerialRuleDetail> q_Detail = _context.SerialRuleDetails; |
|
|
|
ResultModel<string> result = new ResultModel<string>(); |
|
|
|
|
|
|
|
var itemNo = "Sample"; |
|
|
|
itemNo = itemNo.ToUpper(); |
|
|
|
|
|
|
|
var serialRule = await q.Where(p => p.ItemNo == itemNo).FirstOrDefaultAsync(); |
|
|
|
|
|
|
|
|
|
|
|
SerialRuleDetail serialRuleDetail_NEW = new SerialRuleDetail |
|
|
|
{ |
|
|
|
ItemNo = itemNo, |
|
|
|
Rule = serialRule.Rule |
|
|
|
}; |
|
|
|
|
|
|
|
var strRule = serialRule.Rule.ToUpper(); |
|
|
|
var serial = serialRule.Rule; |
|
|
|
var maxSerial = ""; |
|
|
|
var minSerial = ""; |
|
|
|
|
|
|
|
if (strRule.Contains("[WW]")) |
|
|
|
{ |
|
|
|
System.Globalization.GregorianCalendar gc = new System.Globalization.GregorianCalendar(); |
|
|
|
DateTime datetime = System.DateTime.Now; |
|
|
|
int week = gc.GetWeekOfYear(datetime, System.Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Monday); |
|
|
|
serial = serial.Replace("[WW]", week.ToString().Length == 1 ? week.ToString().PadLeft(2, '0') : week.ToString()); |
|
|
|
|
|
|
|
|
|
|
|
serialRuleDetail_NEW.WNum = week; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
if (strRule.Contains("[YY]"))//年份後兩碼
|
|
|
|
{ |
|
|
|
var strYY = System.DateTime.Now.ToString("yy"); |
|
|
|
|
|
|
|
serialRuleDetail_NEW.YNum = int.Parse(System.DateTime.Now.ToString("yy")); |
|
|
|
|
|
|
|
|
|
|
|
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); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var q_detail_tmp = q_Detail.Where(w => w.ItemNo == itemNo && w.YNum == serialRuleDetail_NEW.YNum && w.MNum == serialRuleDetail_NEW.MNum && w.WNum == serialRuleDetail_NEW.WNum && w.LotNum == serialRuleDetail_NEW.LotNum).ToList(); |
|
|
|
if (q_detail_tmp.Count == 0) |
|
|
|
{ |
|
|
|
SerialRuleDetailsController serialRuleDetailsController = new SerialRuleDetailsController(_context); |
|
|
|
await serialRuleDetailsController.PostSerialRuleDetail(serialRuleDetail_NEW); |
|
|
|
|
|
|
|
} |
|
|
|
q_Detail = _context.SerialRuleDetails; |
|
|
|
var SerialRuleDetail = await q_Detail.Where(w => w.ItemNo == itemNo && w.YNum == serialRuleDetail_NEW.YNum && w.MNum == serialRuleDetail_NEW.MNum && w.WNum == serialRuleDetail_NEW.WNum && w.LotNum == serialRuleDetail_NEW.LotNum).FirstOrDefaultAsync(); |
|
|
|
SerialRuleDetail.UpdateDate = System.DateTime.Now; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (strRule.Contains("[SN5]")) |
|
|
|
{ |
|
|
|
SerialRuleDetail.SnNum++; |
|
|
|
maxSerial = serial; |
|
|
|
minSerial = serial.Replace("[SN5]", SerialRuleDetail.SnNum.ToString("00000")); |
|
|
|
SerialRuleDetail.SnNum = SerialRuleDetail.SnNum + num - 1; |
|
|
|
maxSerial = serial.Replace("[SN5]", SerialRuleDetail.SnNum.ToString("00000")); |
|
|
|
serial = minSerial + "-" + maxSerial; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
_context.Entry(SerialRuleDetail).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>
|
|
|
|