Browse Source

Yiru 上傳Serial_rule的取號方式,同一個編碼規則,統一更新取號最大號

PTD
BB.Wang 2 years ago
parent
commit
5f9c60e9c1
  1. 155
      AMESCoreStudio.WebApi/Controllers/AMES/SerialRulesController.cs

155
AMESCoreStudio.WebApi/Controllers/AMES/SerialRulesController.cs

@ -522,6 +522,16 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
[HttpGet("ByQurey/{itemNo}/{lotNo}/{num}/{wipShcDate}")] [HttpGet("ByQurey/{itemNo}/{lotNo}/{num}/{wipShcDate}")]
public async Task<ResultModel<string>> GetSerialRuleByQurey(string itemNo, string lotNo, int num, DateTime 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
4Detail +Y+M+W+Lot的所有資料最大值
*/
IQueryable<SerialRule> q = _context.SerialRules; IQueryable<SerialRule> q = _context.SerialRules;
IQueryable<SerialRuleDetail> q_Detail = _context.SerialRuleDetails; IQueryable<SerialRuleDetail> q_Detail = _context.SerialRuleDetails;
@ -668,8 +678,20 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
} }
q_Detail = _context.SerialRuleDetails; 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; 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 #endregion
@ -706,6 +728,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
} }
if (strRule.Contains("[SN5]")) if (strRule.Contains("[SN5]"))
{ {
SerialRuleDetail.SnNum++; SerialRuleDetail.SnNum++;
if (num > 1) if (num > 1)
{ {
@ -832,8 +855,30 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
#endregion #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 //修改Serial_Rule_Detail
_context.Entry(SerialRuleDetail).State = EntityState.Modified;
try try
{ {
await _context.SaveChangesAsync(); 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>
/// 新增料號基本資料檔 /// 新增料號基本資料檔
/// </summary> /// </summary>

Loading…
Cancel
Save