From 15c81f0171b9e32f986e20dcc58cac6a564eced6 Mon Sep 17 00:00:00 2001 From: ray Date: Sun, 11 Dec 2022 21:45:37 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E9=87=8D=E6=96=B0=E4=B8=8A=E5=82=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PCSController.cs | 118 +++++++++++------- AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs | 7 ++ .../ViewModels/PCS/PCS036ViewModel.cs | 8 ++ AMESCoreStudio.Web/Views/PCS/PCS001N.cshtml | 40 +++++- AMESCoreStudio.Web/Views/PCS/PCS036.cshtml | 12 +- .../AMES/UnbindExtraBarcodeController.cs | 116 +++++++++++++++++ .../Controllers/BLL/BarCodeCheckController.cs | 8 +- .../Models/AMES/UnbindExtraBarcode.cs | 72 +++++++++++ AMESCoreStudio.WebApi/Models/AMESContext.cs | 26 ++-- 9 files changed, 345 insertions(+), 62 deletions(-) create mode 100644 AMESCoreStudio.WebApi/Controllers/AMES/UnbindExtraBarcodeController.cs create mode 100644 AMESCoreStudio.WebApi/Models/AMES/UnbindExtraBarcode.cs diff --git a/AMESCoreStudio.Web/Controllers/PCSController.cs b/AMESCoreStudio.Web/Controllers/PCSController.cs index 856b61fa..a880b103 100644 --- a/AMESCoreStudio.Web/Controllers/PCSController.cs +++ b/AMESCoreStudio.Web/Controllers/PCSController.cs @@ -1785,13 +1785,8 @@ namespace AMESCoreStudio.Web.Controllers // if (model.WipKps != null) { - // 判斷料號KP有資料 沒有資料時 一起新增到料號KP - bool addMasterKP = false; - var materialKp = await _pcsApi.GetMaterialKpByItemID(materialItem.ItemID); - if (materialKp.Count() == 0) - addMasterKP = true; + await _pcsApi.DeleteMaterialKpByItem(materialItem.ItemID); - // KeyParts // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 var resultOld_WipKp = await _pcsApi.GetWipKpByWipNo(model.wipInfo.WipNO); var delete_WipKpID = resultOld_WipKp.Select(s => s.WipKpID).Except(model.WipKps.Select(s => s.WipKpID)); @@ -1799,34 +1794,32 @@ namespace AMESCoreStudio.Web.Controllers { await _pcsApi.DeleteWipKp(id); } + foreach (var item in model.WipKps.Where(w => w.WipKpID != -1)) { item.WipNo = model.wipInfo.WipNO; item.ItemNo = model.wipAtt.ItemNO; - item.UnitNo = model.wipInfo.UnitNO; if (item.WipKpID == 0) await _pcsApi.PostWipKp(JsonConvert.SerializeObject(item)); else await _pcsApi.PutWipKp(JsonConvert.SerializeObject(item)); - // 判斷料號KP有資料 沒有資料時 一起新增到料號KP - if (addMasterKP) + // 新增到料號KP檔 + await _pcsApi.PostMaterialKp(JsonConvert.SerializeObject(new MaterialKp { - await _pcsApi.PostMaterialKp(JsonConvert.SerializeObject(new MaterialKp - { - ItemID = materialID, - KpName = item.KpName, - KpNo = item.KpNo, - KpSeq = Convert.ToInt32(item.KpSeq), - Length = item.Length, - StationType = item.UnitNo, - IsRepeat = "N", - Title = item.Title, - CreateUserID = UserID, - UpdateUserID = UserID - })); - } + ItemID = materialItem.ItemID, + KpName = item.KpName, + KpNo = item.KpNo, + KpSeq = Convert.ToInt32(item.KpSeq), + Length = item.Length, + StationType = item.UnitNo, + IsRepeat = "N", + Title = item.Title, + CreateUserID = UserID, + UpdateUserID = UserID + })); } + model.WipKps = model.WipKps.Where(w => w.WipKpID != -1).ToList(); } // 將料號KP新增到WIP_KP 上 else @@ -1839,7 +1832,7 @@ namespace AMESCoreStudio.Web.Controllers { WipNo = model.wipInfo.WipNO, ItemNo = model.wipAtt.ItemNO, - UnitNo = model.wipInfo.UnitNO, + UnitNo = item.StationType, KpName = item.KpName, KpNo = item.KpNo, KpSeq = item.KpSeq, @@ -1911,6 +1904,7 @@ namespace AMESCoreStudio.Web.Controllers else await _pcsApi.PutWipKp(JsonConvert.SerializeObject(item)); } + model.WipKps = model.WipKps.Where(w => w.WipKpID != -1).ToList(); } } @@ -2412,14 +2406,28 @@ namespace AMESCoreStudio.Web.Controllers // 判斷工單號碼是否已經投入 if (await _pcsApi.GetWipInfoCheckStart(q.FirstOrDefault().WipNO) == "Y") { - var _msg = "工單號碼【" + q.FirstOrDefault().WipNO + "】,工單已開始投入,不可修改!"; + var _msg = "工單號碼【" + q.FirstOrDefault().WipNO + "】,已開始投入,不可修改!"; return RedirectToAction("Refresh", "Home", new { msg = _msg }); } // 判斷工單號碼是否已經開線 if (await _pcsApi.GetWipInfoCheckStartLine(q.FirstOrDefault().WipNO) == "Y") { - var _msg = "工單號碼【" + q.FirstOrDefault().WipNO + "】,工單已開線,不可修改!"; + var _msg = "工單號碼【" + q.FirstOrDefault().WipNO + "】,已開線,不可修改!"; + return RedirectToAction("Refresh", "Home", new { msg = _msg }); + } + + // 判斷是否完工 + if (q.Where(w => w.StatusNO == "E").Any()) + { + var _msg = "工單號碼【" + q.FirstOrDefault().WipNO + "】,已經投入完工,不可修改"; + return RedirectToAction("Refresh", "Home", new { msg = _msg }); + } + + // 判斷是否刪除 + if (q.Where(w => w.StatusNO == "C").Any()) + { + var _msg = "工單號碼【" + q.FirstOrDefault().WipNO + "】,已刪除,不可修改"; return RedirectToAction("Refresh", "Home", new { msg = _msg }); } @@ -2768,8 +2776,8 @@ namespace AMESCoreStudio.Web.Controllers } } } - // KeyParts + // KeyParts // 判斷料號KP有資料 沒有資料時 一起新增到料號KP // 2022.10.12 取消判斷 刪除料號KP,在逐一新增 var materialItem = await _pcsApi.GetMaterialItemByItemNO(model.wipAtt.ItemNO); @@ -2778,14 +2786,6 @@ namespace AMESCoreStudio.Web.Controllers await _pcsApi.DeleteMaterialKpByItem(materialItem.ItemID); } - //bool addMasterKP = false; - //if (materialItem != null) - //{ - // var materialKp = await _pcsApi.GetMaterialKpByItemID(materialItem.ItemID); - // if (materialKp.Count() == 0) - // addMasterKP = true; - //} - // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 var resultOld_WipKp = await _pcsApi.GetWipKpByWipNo(model.wipInfo.WipNO); var delete_WipKpID = resultOld_WipKp.Select(s => s.WipKpID).Except(model.WipKps.Select(s => s.WipKpID)); @@ -2818,6 +2818,7 @@ namespace AMESCoreStudio.Web.Controllers UpdateUserID = UserID })); } + model.WipKps = model.WipKps.Where(w => w.WipKpID != -1).ToList(); // 治具 // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 @@ -2837,6 +2838,7 @@ namespace AMESCoreStudio.Web.Controllers else await _pcsApi.PutWipOutfit(JsonConvert.SerializeObject(item)); } + model.WipOutfits = model.WipOutfits.Where(w => w.WipOutfitID != -1); // SOP // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 @@ -2855,6 +2857,7 @@ namespace AMESCoreStudio.Web.Controllers else await _pcsApi.PutWipSop(JsonConvert.SerializeObject(item)); } + model.WipSops = model.WipSops.Where(w => w.WipSOPID != -1); // 檔案上傳 string FileName = string.Empty; @@ -2963,6 +2966,20 @@ namespace AMESCoreStudio.Web.Controllers var q = await _pcsApi.GetWipInfo(id); if (q.Count != 0) { + // 判斷是否完工 + if (q.Where(w => w.StatusNO == "E").Any()) + { + var _msg = "工單號碼【" + q.FirstOrDefault().WipNO + "】,已經投入完工,不可修改"; + return RedirectToAction("Refresh", "Home", new { msg = _msg }); + } + + // 判斷是否刪除 + if (q.Where(w => w.StatusNO == "C").Any()) + { + var _msg = "工單號碼【" + q.FirstOrDefault().WipNO + "】,已刪除,不可修改"; + return RedirectToAction("Refresh", "Home", new { msg = _msg }); + } + model.wipInfo = q.FirstOrDefault(); model.wipAtt = await _pcsApi.GetWipAtt(model.wipInfo.WipNO); model.wipBarcodes = await _pcsApi.GetWipBarcode(model.wipInfo.WipNO); @@ -3316,14 +3333,6 @@ namespace AMESCoreStudio.Web.Controllers await _pcsApi.DeleteMaterialKpByItem(materialItem.ItemID); } - //bool addMasterKP = false; - //if (materialItem != null) - //{ - // var materialKp = await _pcsApi.GetMaterialKpByItemID(materialItem.ItemID); - // if (materialKp.Count() == 0) - // addMasterKP = true; - //} - // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 var resultOld_WipKp = await _pcsApi.GetWipKpByWipNo(model.wipInfo.WipNO); var delete_WipKpID = resultOld_WipKp.Select(s => s.WipKpID).Except(model.WipKps.Select(s => s.WipKpID)); @@ -3356,6 +3365,7 @@ namespace AMESCoreStudio.Web.Controllers UpdateUserID = UserID })); } + model.WipKps = model.WipKps.Where(w => w.WipKpID != -1).ToList(); // 治具 // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 @@ -3375,6 +3385,7 @@ namespace AMESCoreStudio.Web.Controllers else await _pcsApi.PutWipOutfit(JsonConvert.SerializeObject(item)); } + model.WipOutfits = model.WipOutfits.Where(w => w.WipOutfitID != -1); // SOP // 先比對新舊ID 當舊ID有 新的沒有代表已刪除 @@ -3393,6 +3404,7 @@ namespace AMESCoreStudio.Web.Controllers else await _pcsApi.PutWipSop(JsonConvert.SerializeObject(item)); } + model.WipSops = model.WipSops.Where(w => w.WipSOPID != -1); // 檔案上傳 string FileName = string.Empty; @@ -6425,7 +6437,7 @@ namespace AMESCoreStudio.Web.Controllers public async Task PCS024C(string id) { var result = await _pcsApi.GetBarcodeInfoesByNo(id); - + var tt = result[0]; ViewBag.BarcodeID = tt.BarcodeID; ViewBag.WipID = tt.WipID; @@ -7078,7 +7090,7 @@ namespace AMESCoreStudio.Web.Controllers barcodeItemChange.UpdateDate = System.DateTime.Now; model.CreateUserID = GetLogInUserID(); result = await _pcsApi.PutBarcodeItem(model.BarcodeItemID, JsonConvert.SerializeObject(model)); - + result2 = await _pcsApi.PostBarcodeItemChange(JsonConvert.SerializeObject(barcodeItemChange)); //result = await _pcsApi.PostBarcodeItem(JsonConvert.SerializeObject(model)); @@ -7168,7 +7180,7 @@ namespace AMESCoreStudio.Web.Controllers // var Data = result.Data.Where(w => w.StatusName == "允收"); var Data = result.Data; - + return Json(new Table() { code = 0, msg = "", data = Data, count = Data.Count() }); } return Json(new Table() { count = 0, data = null }); @@ -7797,9 +7809,21 @@ namespace AMESCoreStudio.Web.Controllers // _msg += "解除綁定失敗"; //} } - _msg += "條碼區間解除綁定成功"; } + + _msg = "條碼區間【" + model.BarCodeNoStr + "】 ~ 【" + model.BarCodeNoEnd + "】解除綁定成功"; } + + // 新增Log + var unbindExtraBarcode = new UnbindExtraBarcode + { + StartBarcodeNo = select == "0" ? model.BarCodeNo : model.BarCodeNoStr, + EndBarcodeNo = select == "0" ? model.BarCodeNo : model.BarCodeNoEnd, + UnbindReason = model.Remark, + CreateUserID = GetLogInUserID() + }; + await _pcsApi.PostUnbindExtraBarcode(JsonConvert.SerializeObject(unbindExtraBarcode)); + ModelState.AddModelError("error", _msg); return View(model); } diff --git a/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs b/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs index 7a413131..ada26b1c 100644 --- a/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs +++ b/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs @@ -1375,5 +1375,12 @@ namespace AMESCoreStudio.Web /// 工單號碼 [WebApiClient.Attributes.HttpGet("api/BarCodeCheck/CheckBarCodeByWipNo")] ITask> CheckBarCodeByWipNo(string barcode, string wipNo); + + /// + /// 新增解除綁定出貨序號箱號Log + /// + /// + [WebApiClient.Attributes.HttpPost("api/UnbindExtraBarcode")] + ITask> PostUnbindExtraBarcode([FromBody, RawJsonContent] string model); } } diff --git a/AMESCoreStudio.Web/ViewModels/PCS/PCS036ViewModel.cs b/AMESCoreStudio.Web/ViewModels/PCS/PCS036ViewModel.cs index 57444387..92d7cd97 100644 --- a/AMESCoreStudio.Web/ViewModels/PCS/PCS036ViewModel.cs +++ b/AMESCoreStudio.Web/ViewModels/PCS/PCS036ViewModel.cs @@ -30,5 +30,13 @@ namespace AMESCoreStudio.Web.ViewModels.PCS /// public string BarCodeNoEnd { get; set; } + /// + /// 備註 + /// + [Display(Name = "解除綁定備註")] + [Required(ErrorMessage = "{0},不能空白")] + [StringLength(100)] + public string Remark { get; set; } + } } diff --git a/AMESCoreStudio.Web/Views/PCS/PCS001N.cshtml b/AMESCoreStudio.Web/Views/PCS/PCS001N.cshtml index 12d421d8..b7c17dcd 100644 --- a/AMESCoreStudio.Web/Views/PCS/PCS001N.cshtml +++ b/AMESCoreStudio.Web/Views/PCS/PCS001N.cshtml @@ -300,6 +300,9 @@ 長度 + + 生產單位代號 + @@ -325,6 +328,9 @@ + + + 刪除 @@ -701,6 +707,12 @@ $('#KPTableAdd').click(); $('#KPTableAdd').on('click', function () { let No = parseInt($('#WipKpCount').val()); + var FactoryUnit = getFactoryUnitByWipNoList(); + var Select = "'; var Items = getItemsList(); var SelectKPNo = "' + '' + - ''+SelectKPNo+'' + - '' + + '' + SelectKPNo + '' + + '' + '' + '' + + '' + Select + '' + '刪除' + ''; @@ -803,6 +816,29 @@ return false; } }); + + //生產單位By工單號碼選單 + function getFactoryUnitByWipNoList() + { + var a; + $.ajax( + { + url: "@Url.Action("GetFactoryUnitByWipNoJson", "PCS")", + dataType: 'json', + data: { "wipNo": $("#wipInfo_WipNO").val()}, + async:false, + type: 'post', + success: function (result) + { + a = result.data; + }, + error: function (result) + { + alert(result); + } + }); + return a; + }; } diff --git a/AMESCoreStudio.Web/Views/PCS/PCS036.cshtml b/AMESCoreStudio.Web/Views/PCS/PCS036.cshtml index 0e57b5d1..89b8b30b 100644 --- a/AMESCoreStudio.Web/Views/PCS/PCS036.cshtml +++ b/AMESCoreStudio.Web/Views/PCS/PCS036.cshtml @@ -33,15 +33,23 @@
- +
- +
+
+ +
+ + +
+
+ @Html.ValidationMessage("error")
diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/UnbindExtraBarcodeController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/UnbindExtraBarcodeController.cs new file mode 100644 index 00000000..d1d040fb --- /dev/null +++ b/AMESCoreStudio.WebApi/Controllers/AMES/UnbindExtraBarcodeController.cs @@ -0,0 +1,116 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using AMESCoreStudio.WebApi; +using AMESCoreStudio.WebApi.Models.AMES; +using AMESCoreStudio.WebApi.DTO.AMES; +using AMESCoreStudio.CommonTools.Result; +using AMESCoreStudio.WebApi.Enum; + +namespace AMESCoreStudio.WebApi.Controllers.AMES +{ + /// + /// 解除綁定出貨序號箱號資料檔 + /// + [Route("api/[controller]")] + [ApiController] + public class UnbindExtraBarcodeController : ControllerBase + { + private readonly AMESContext _context; + + public UnbindExtraBarcodeController(AMESContext context) + { + _context = context; + } + + [HttpGet] + public async Task>> GetUnbindExtraBarcode() + { + return await _context.UnbindExtraBarcodes.ToListAsync(); + } + + [HttpGet("{id}")] + public async Task> GetUnbindExtraBarcode(int id) + { + var unbindExtraBarcode = await _context.UnbindExtraBarcodes.FindAsync(id); + + if (unbindExtraBarcode == null) + { + return NotFound(); + } + + return unbindExtraBarcode; + } + + /// + /// 更新解除綁定出貨序號箱號資料檔 + /// + /// + /// + [HttpPut] + public async Task> PutUnbindExtraBarcode(UnbindExtraBarcode unbindExtraBarcode) + { + ResultModel result = new ResultModel(); + _context.Entry(unbindExtraBarcode).State = EntityState.Modified; + + try + { + await _context.SaveChangesAsync(); + result.Success = true; + result.Msg = "OK"; + } + catch (Exception ex) + { + result.Success = false; + result.Msg = ex.InnerException.Message; + } + return result; + } + + /// + /// 新增解除綁定出貨序號箱號資料檔 + /// + /// + /// + [HttpPost] + public async Task> PostUnbindExtraBarcode(UnbindExtraBarcode unbindExtraBarcode) + { + ResultModel result = new ResultModel(); + Helper helper = new Helper(_context); + unbindExtraBarcode.UnbindBarcodeId = helper.GetIDKey("UNBIND_BARCODE_ID").Result; + _context.UnbindExtraBarcodes.Add(unbindExtraBarcode); + try + { + await _context.SaveChangesAsync(); + result.Success = true; + result.Msg = "OK"; + } + catch (Exception ex) + { + result.Success = false; + result.Msg = ex.InnerException.Message; + } + return result; + } + + // DELETE: api/FqcItem/5 + [HttpDelete("{id}")] + public async Task> DeleteUnbindExtraBarcode(int id) + { + var unbindExtraBarcode = await _context.UnbindExtraBarcodes.FindAsync(id); + if (unbindExtraBarcode == null) + { + return NotFound(); + } + + _context.UnbindExtraBarcodes.Remove(unbindExtraBarcode); + await _context.SaveChangesAsync(); + + return unbindExtraBarcode; + } + } +} diff --git a/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs b/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs index 140eb119..9f6f4206 100644 --- a/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs +++ b/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs @@ -1640,14 +1640,18 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES return resultModel; } - - if (WipNoItem.Where(w => w.StatusNO == "E").Any()) { resultModel.Msg = "工單號碼【" + wipNo + "】,該工單已經投入完工,請切換工單"; return resultModel; } + if (WipNoItem.Where(w => w.StatusNO == "C").Any()) + { + resultModel.Msg = "工單號碼【" + wipNo + "】,該工單已刪除,請切換工單"; + return resultModel; + } + // 判斷是否是投入站 var RuleStation = await _context.RuleStations.Where(w => w.FlowRuleID == flowRuleID && w.StationID == stationID) .FirstOrDefaultAsync(); diff --git a/AMESCoreStudio.WebApi/Models/AMES/UnbindExtraBarcode.cs b/AMESCoreStudio.WebApi/Models/AMES/UnbindExtraBarcode.cs new file mode 100644 index 00000000..6bea93ac --- /dev/null +++ b/AMESCoreStudio.WebApi/Models/AMES/UnbindExtraBarcode.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using Microsoft.EntityFrameworkCore; +using System.Runtime.Serialization; + +#nullable disable + +namespace AMESCoreStudio.WebApi.Models.AMES +{ + /// + /// 解除綁定出貨序號箱號資料檔 + /// + [Table("UNBIND_EXTRA_BARCODE", Schema = "JHAMES")] + public partial class UnbindExtraBarcode + { + /// + /// 解除綁定ID + /// + [Key] + [Column("UNBIND_BARCODE_ID")] + [DataMember] + public int UnbindBarcodeId { get; set; } + + /// + /// 起始生產條碼 + /// + [Display(Name = "起始生產條碼")] + [Required(ErrorMessage = "{0},不能空白")] + [Column("START_BARCODE_NO")] + [StringLength(30)] + [DataMember] + public string StartBarcodeNo { get; set; } + + /// + /// 結束生產條碼 + /// + [Display(Name = "結束生產條碼")] + [Required(ErrorMessage = "{0},不能空白")] + [Column("END_BARCODE_NO")] + [StringLength(30)] + [DataMember] + public string EndBarcodeNo { get; set; } + + /// + /// 解除綁定備註 + /// + [Display(Name = "解除綁定備註")] + [Required(ErrorMessage = "{0},不能空白")] + [Column("UNBIND_REASON")] + [StringLength(100)] + [DataMember] + public string UnbindReason { get; set; } + + /// + /// 建立UserID + /// + [Column("CREATE_USERID")] + [Required] + [DataMember] + public int CreateUserID { get; set; } = 0; + + /// + /// 建立日期 + /// + [Required] + [Column("CREATE_DATE")] + [DataMember] + public DateTime CreateDate { get; set; } = DateTime.Now; + } +} diff --git a/AMESCoreStudio.WebApi/Models/AMESContext.cs b/AMESCoreStudio.WebApi/Models/AMESContext.cs index efb00e55..ab3c6e3d 100644 --- a/AMESCoreStudio.WebApi/Models/AMESContext.cs +++ b/AMESCoreStudio.WebApi/Models/AMESContext.cs @@ -351,9 +351,9 @@ namespace AMESCoreStudio.WebApi /// public DbSet CycleTimes { get; set; } - ///// - ///// 不良現象原因代碼資料 - ///// + /// + /// 不良現象原因代碼資料 + /// public DbSet NGReasons { get; set; } /// @@ -397,6 +397,9 @@ namespace AMESCoreStudio.WebApi //public virtual DbSet WipSops { get; set; } public virtual DbSet MaterialSops { get; set; } + /// + /// 料號基本資料檔 + /// public virtual DbSet MaterialItems { get; set; } /// @@ -725,14 +728,14 @@ namespace AMESCoreStudio.WebApi /// public virtual DbSet OutfitCommodityInfoes { get; set; } - ///// - ///// 設備規格資料檔 - ///// + /// + /// 設備規格資料檔 + /// public virtual DbSet OutfitVarityInfoes { get; set; } - ///// - ///// 廠商資料檔 - ///// + /// + /// 廠商資料檔 + /// public virtual DbSet OutfitVendorInfoes { get; set; } /// @@ -865,6 +868,11 @@ namespace AMESCoreStudio.WebApi /// FQC 報表自動派送維護 /// public virtual DbSet FqcNoticeMails { get; set; } + + /// + /// 解除綁定出貨序號箱號資料檔 + /// + public virtual DbSet UnbindExtraBarcodes { get; set; } } }