From 54f6cda0ca59362c1e63561a703b3167095df8dc Mon Sep 17 00:00:00 2001 From: ray Date: Sun, 5 Mar 2023 21:05:39 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E4=BF=AE=E6=AD=A3=E5=B7=A5=E5=96=AE?= =?UTF-8?q?=E9=8E=96=E5=AE=9A=E7=9B=B8=E9=97=9CUI=E5=95=8F=E9=A1=8C=202.?= =?UTF-8?q?=20=E5=B7=A5=E5=96=AE=E6=8A=95=E7=94=A2=E4=B8=AD=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=E5=8A=A0=E5=85=A5=20=E5=88=A4=E6=96=B7=E5=B7=A5?= =?UTF-8?q?=E5=96=AE=E6=95=B8=E9=87=8F=E5=B0=8F=E6=96=BC=E5=B7=B2=E6=8A=95?= =?UTF-8?q?=E5=85=A5=E6=95=B8=203.=20=E9=81=8E=E7=AB=99=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=20=E7=AC=AC=E4=B8=80=E7=AB=99=E5=88=A4=E6=96=B7=E5=B7=A5?= =?UTF-8?q?=E5=96=AE=E6=95=B8=E9=87=8F=E6=98=AF=E5=90=A6=E5=B7=B2=E7=B6=93?= =?UTF-8?q?=E5=B0=8F=E6=96=BC=E5=B7=B2=E6=8A=95=E5=85=A5=E6=95=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PCSController.cs | 45 ++++++++---- AMESCoreStudio.Web/Views/PCS/PCS012.cshtml | 16 ++++- AMESCoreStudio.Web/Views/PCS/PCS034.cshtml | 69 ++++++++----------- .../Controllers/AMES/WipInfosController.cs | 1 + .../Controllers/AMES/WipLockController.cs | 63 +++++++++-------- .../Controllers/BLL/BarCodeCheckController.cs | 11 +++ AMESCoreStudio.WebApi/DTO/AMES/WipLockDto.cs | 20 +++++- AMESCoreStudio.WebApi/Models/AMES/WipLock.cs | 2 - AMESCoreStudio.WebApi/Models/AMES/WipMAC.cs | 8 +++ 9 files changed, 143 insertions(+), 92 deletions(-) diff --git a/AMESCoreStudio.Web/Controllers/PCSController.cs b/AMESCoreStudio.Web/Controllers/PCSController.cs index d35231a2..c658a58c 100644 --- a/AMESCoreStudio.Web/Controllers/PCSController.cs +++ b/AMESCoreStudio.Web/Controllers/PCSController.cs @@ -3213,6 +3213,12 @@ namespace AMESCoreStudio.Web.Controllers } } + // 修改工單數量不能小於已投入數量 + if (model.wipInfo.CompleteQTY > model.wipInfo.PlanQTY) + { + Msg += ",修改工單數量不能小於已投入數量"; + } + if (!string.IsNullOrWhiteSpace(Msg)) { if (Msg.StartsWith(",")) @@ -3837,7 +3843,8 @@ namespace AMESCoreStudio.Web.Controllers model.WipAtt = await _pcsApi.GetWipAtt(model.WipInfo.WipNO); model.WipBarcodes = await _pcsApi.GetWipBarcode(model.WipInfo.WipNO); model.RuleStation = await _basApi.GetRuleStationsByFlow(model.WipInfo.FlowRuleID); - model.WipInfo.WipType = model.WipInfo.WipType == "S" ? "標準工單" : "重工工單"; + model.WipInfo.WipType = model.WipInfo.WipType == "S" ? "標準工單" : + model.WipInfo.WipType == "R" ? "重工工單" : "無序號工單"; //model.RuleStation = model.RuleStation.OrderBy(o => o.Sequence); } return View(model); @@ -3855,7 +3862,8 @@ namespace AMESCoreStudio.Web.Controllers model.WipAtt = await _pcsApi.GetWipAtt(model.WipInfo.WipNO); model.WipBarcodes = await _pcsApi.GetWipBarcode(model.WipInfo.WipNO); model.RuleStation = await _basApi.GetRuleStationsByFlow(model.WipInfo.FlowRuleID); - model.WipInfo.WipType = model.WipInfo.WipType == "S" ? "標準工單" : "重工工單"; + model.WipInfo.WipType = model.WipInfo.WipType == "S" ? "標準工單" : + model.WipInfo.WipType == "R" ? "重工工單" : "無序號工單"; //model.RuleStation = model.RuleStation.OrderBy(o => o.Sequence); } return View(model); @@ -4710,6 +4718,7 @@ namespace AMESCoreStudio.Web.Controllers if (ModelState.IsValid) { + model.LockUserID = GetLogInUserID(); result = await _pcsApi.PostWipLock(JsonConvert.SerializeObject(model)); if (result.Success) { @@ -4763,13 +4772,13 @@ namespace AMESCoreStudio.Web.Controllers return View(); } - model.WipLockID = result_WipLock.Data.FirstOrDefault().WipLockID; + model.WipLockID = result_WipLock.Data.Where(w => w.LockStatus == "0" && w.StationID == model.StationID).FirstOrDefault().WipLockID; closeView = false; } IResultModel result; model.UnLockDate = DateTime.Now; - model.UnLockUserID = 0; + model.UnLockUserID = GetLogInUserID(); result = await _pcsApi.PutWipLock(JsonConvert.SerializeObject(model)); if (result.Success) { @@ -4814,7 +4823,7 @@ namespace AMESCoreStudio.Web.Controllers IResultModel result; model.UnLockDate = DateTime.Now; - model.UnLockUserID = 0; + model.UnLockUserID = GetLogInUserID(); result = await _pcsApi.PutWipLock(JsonConvert.SerializeObject(model)); if (result.Success) { @@ -4918,7 +4927,7 @@ namespace AMESCoreStudio.Web.Controllers StatusID = q.FirstOrDefault().StatusID, LockStatus = 0, LockReason = model.LockReason, - LockUserID = 0 + LockUserID = GetLogInUserID() }; result = await _pcsApi.PostBarcodeLock(JsonConvert.SerializeObject(barcodeLock)); if (result.Success) @@ -4974,7 +4983,7 @@ namespace AMESCoreStudio.Web.Controllers StatusID = item.StatusID, LockStatus = 0, LockReason = model.LockReason, - LockUserID = 0 + LockUserID = GetLogInUserID() }; result = await _pcsApi.PostBarcodeLock(JsonConvert.SerializeObject(barcodeLock)); if (result.Success) @@ -5061,7 +5070,7 @@ namespace AMESCoreStudio.Web.Controllers StatusID = q_BarcodeInfo.FirstOrDefault().StatusID, LockStatus = 0, LockReason = model.LockReason, - LockUserID = 0 + LockUserID = GetLogInUserID() }; result = await _pcsApi.PostBarcodeLock(JsonConvert.SerializeObject(barcodeLock)); if (result.Success) @@ -5131,7 +5140,7 @@ namespace AMESCoreStudio.Web.Controllers BarcodeLock barcodeLock = q1.Where(w => w.LockStatus == 0).FirstOrDefault(); barcodeLock.LockStatus = 1; barcodeLock.UnLockReason = model.UnLockReason; - barcodeLock.UnLockUserID = 0; + barcodeLock.UnLockUserID = GetLogInUserID(); barcodeLock.UnLockDate = System.DateTime.Now; var aaa = JsonConvert.SerializeObject(barcodeLock); result = await _pcsApi.PutBarcodeLock(JsonConvert.SerializeObject(barcodeLock)); @@ -5179,7 +5188,7 @@ namespace AMESCoreStudio.Web.Controllers BarcodeLock barcodeLock = q2.Where(w => w.LockStatus == 0).FirstOrDefault(); barcodeLock.LockStatus = 1; barcodeLock.UnLockReason = model.UnLockReason; - barcodeLock.UnLockUserID = 0; + barcodeLock.UnLockUserID = GetLogInUserID(); barcodeLock.UnLockDate = System.DateTime.Now; result = await _pcsApi.PutBarcodeLock(JsonConvert.SerializeObject(barcodeLock)); if (result.Success) @@ -5264,7 +5273,7 @@ namespace AMESCoreStudio.Web.Controllers BarcodeLock barcodeLock = q2.Where(w => w.LockStatus == 0).FirstOrDefault(); barcodeLock.LockStatus = 1; barcodeLock.UnLockReason = model.UnLockReason; - barcodeLock.UnLockUserID = 0; + barcodeLock.UnLockUserID = GetLogInUserID(); barcodeLock.UnLockDate = System.DateTime.Now; result = await _pcsApi.PutBarcodeLock(JsonConvert.SerializeObject(barcodeLock)); if (result.Success) @@ -5359,6 +5368,7 @@ namespace AMESCoreStudio.Web.Controllers IResultModel result; model.WipBarcode.WipNO = model.WipInfo.WipNO; + model.WipBarcode.CreateUserID = GetLogInUserID(); //model.WipBarcode.WipID = model.WipInfo.WipID; //model.WipBarcode.UnitNO = model.WipInfo.UnitNO; @@ -5397,7 +5407,8 @@ namespace AMESCoreStudio.Web.Controllers model.WipAtt = await _pcsApi.GetWipAtt(model.WipInfo.WipNO); model.WipBarcodeOther = await _pcsApi.GetWipBarcodeOther(model.WipInfo.WipNO); model.RuleStation = await _basApi.GetRuleStationsByFlow(model.WipInfo.FlowRuleID); - model.WipInfo.WipType = model.WipInfo.WipType == "S" ? "標準工單" : "重工工單"; + model.WipInfo.WipType = model.WipInfo.WipType == "S" ? "標準工單" : + model.WipInfo.WipType == "R" ? "重工工單" : "無序號工單"; //model.RuleStation = model.RuleStation.OrderBy(o => o.Sequence); } return View(model); @@ -5415,7 +5426,8 @@ namespace AMESCoreStudio.Web.Controllers model.WipAtt = await _pcsApi.GetWipAtt(model.WipInfo.WipNO); model.WipBarcodes = await _pcsApi.GetWipBarcode(model.WipInfo.WipNO); model.RuleStation = await _basApi.GetRuleStationsByFlow(model.WipInfo.FlowRuleID); - model.WipInfo.WipType = model.WipInfo.WipType == "S" ? "標準工單" : "重工工單"; + model.WipInfo.WipType = model.WipInfo.WipType == "S" ? "標準工單" : + model.WipInfo.WipType == "R" ? "重工工單" : "無序號工單"; //model.RuleStation = model.RuleStation.OrderBy(o => o.Sequence); } return View(model); @@ -5600,6 +5612,7 @@ namespace AMESCoreStudio.Web.Controllers IResultModel result; model.WipBarcode.WipNO = model.WipInfo.WipNO; + model.WipBarcode.CreateUserID = GetLogInUserID(); //model.WipBarcode.WipID = model.WipInfo.WipID; //model.WipBarcode.UnitNO = model.WipInfo.UnitNO; @@ -5638,7 +5651,8 @@ namespace AMESCoreStudio.Web.Controllers model.WipAtt = await _pcsApi.GetWipAtt(model.WipInfo.WipNO); model.WipBarcodes = await _pcsApi.GetWipBarcode(model.WipInfo.WipNO); model.RuleStation = await _basApi.GetRuleStationsByFlow(model.WipInfo.FlowRuleID); - model.WipInfo.WipType = model.WipInfo.WipType == "S" ? "標準工單" : "重工工單"; + model.WipInfo.WipType = model.WipInfo.WipType == "S" ? "標準工單" : + model.WipInfo.WipType == "R" ? "重工工單" : "無序號工單"; //model.RuleStation = model.RuleStation.OrderBy(o => o.Sequence); } return View(model); @@ -5656,7 +5670,8 @@ namespace AMESCoreStudio.Web.Controllers model.WipAtt = await _pcsApi.GetWipAtt(model.WipInfo.WipNO); model.WipBarcodes = await _pcsApi.GetWipBarcode(model.WipInfo.WipNO); model.RuleStation = await _basApi.GetRuleStationsByFlow(model.WipInfo.FlowRuleID); - model.WipInfo.WipType = model.WipInfo.WipType == "S" ? "標準工單" : "重工工單"; + model.WipInfo.WipType = model.WipInfo.WipType == "S" ? "標準工單" : + model.WipInfo.WipType == "R" ? "重工工單" : "無序號工單"; //model.RuleStation = model.RuleStation.OrderBy(o => o.Sequence); } return View(model); diff --git a/AMESCoreStudio.Web/Views/PCS/PCS012.cshtml b/AMESCoreStudio.Web/Views/PCS/PCS012.cshtml index a76af2a9..f20df2fd 100644 --- a/AMESCoreStudio.Web/Views/PCS/PCS012.cshtml +++ b/AMESCoreStudio.Web/Views/PCS/PCS012.cshtml @@ -210,6 +210,12 @@ field: 'lockReason', title: '鎖定原因' }, + { + field: 'lockUserName', + title: '鎖定人員', + width: 100, + sort: true + }, { field: 'lockDate', title: '鎖定日期', @@ -221,7 +227,13 @@ title: '解鎖原因' }, { - field: 'unLockDate', + field: 'unLockUserName', + title: '解鎖人員', + width: 100, + sort: true + }, + { + field: 'unLockDate', title: '解鎖日期', width: 100, templet: '
{{ layui.util.toDateString(d.unLockDate, "yyyy/MM/dd") }}
' @@ -233,7 +245,7 @@ align: 'center', fixed: 'right', templet: function (d) { - if (d.unLockReason == null) { + if (d.unLockDate == null) { return '' } else { diff --git a/AMESCoreStudio.Web/Views/PCS/PCS034.cshtml b/AMESCoreStudio.Web/Views/PCS/PCS034.cshtml index 52579fde..cdbc3b79 100644 --- a/AMESCoreStudio.Web/Views/PCS/PCS034.cshtml +++ b/AMESCoreStudio.Web/Views/PCS/PCS034.cshtml @@ -28,6 +28,7 @@ + @@ -260,20 +261,20 @@ @*
-
- -
- -
-
-
-
- -
-
- -
-
-
*@ +
+ +
+ +
+
-
+
+ +
+
+ +
+
+ *@
@@ -477,15 +478,9 @@
- - - + + +
@@ -501,9 +496,7 @@
- +
@@ -524,9 +517,7 @@
- +
@@ -539,9 +530,7 @@
- +
@@ -557,9 +546,7 @@
- +
@@ -863,9 +850,7 @@
- +
@@ -976,8 +961,8 @@ SOP文件敘述 @* - 檔案路徑 - *@ + 檔案路徑 + *@ SOP類型 @@ -998,8 +983,8 @@ @* - - *@ + + *@ diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs index 016d7936..826c4977 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs @@ -202,6 +202,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES q4.UnitName }; + q = q.Where(w => w.StatusNO == wipStatus); if (unitNo != "*") { diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/WipLockController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/WipLockController.cs index 548ac3a4..076612f2 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/WipLockController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/WipLockController.cs @@ -52,7 +52,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES { IQueryable q = _context.WipLocks; var wipLock = await q.Where(p => p.WipLockID == id).ToListAsync(); - + //if (result.Data.Count() == 0) //{ // return NotFound(); @@ -100,10 +100,35 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES , string itemno, string lockreasontype, int stations = 0, string date_str = null, string date_end = null , int page = 0, int limit = 10) { - IQueryable q = _context.WipLocks; + IQueryable q = from s in _context.WipLocks + join q2 in _context.UserInfoes on s.LockUserID equals q2.UserID into cp2 + from q2 in cp2.DefaultIfEmpty() + join q3 in _context.UserInfoes on s.UnLockUserID equals q3.UserID into cp3 + from q3 in cp3.DefaultIfEmpty() + select new WipLockDto + { + WipNO = s.WipNO, + WipLockID = s.WipLockID, + ItemNO = s.WipAtt.ItemNO, + LockDate = s.LockDate, + UnLockDate = s.UnLockDate, + LockUserID = s.LockUserID, + LockReason = s.LockReason, + LockStatus = s.LockStatus == "0" ? "鎖定" : "解鎖", + UnLockUserID = s.UnLockUserID, + UnLockReason = s.UnLockReason, + LockReasonType = s.LockReasonType, + LockReasonTypeName = s.LockReasonType == "0" ? "3C認證工單" : + s.LockReasonType == "1" ? "驗證工單" : "維修換料待分析", + LockType = s.LockType, + LockUserName = q2.UserName, + UnLockUserName = q3.UserName, + StationID = s.StationID, + StationName = s.Stations.StationName + }; if (!string.IsNullOrWhiteSpace(wipNO)) - q = q.Where(w => w.WipNO == wipNO); + q = q.Where(w => w.WipNO == wipNO); if (!string.IsNullOrWhiteSpace(lockstatus)) q = q.Where(w => w.LockStatus == lockstatus); @@ -115,7 +140,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES q = q.Where(w => w.LockReasonType == lockreasontype); if (!string.IsNullOrWhiteSpace(itemno)) - q = q.Where(w => w.WipAtt.ItemNO == itemno); + q = q.Where(w => w.ItemNO == itemno); if (stations != 0) q = q.Where(w => w.StationID == stations); @@ -141,27 +166,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES q = q.Skip((page - 1) * limit).Take(limit); } - result.Data = await q.Select(s => new WipLockDto - { - WipNO = s.WipNO, - WipLockID = s.WipLockID, - ItemNO = s.WipAtt.ItemNO, - LockDate = s.LockDate, - UnLockDate = s.UnLockDate, - LockUserID = s.LockUserID, - LockReason = s.LockReason, - LockStatus = s.LockStatus == "0" ? "鎖定" : "解鎖", - UnLockUserID = s.UnLockUserID, - UnLockReason = s.UnLockReason, - LockReasonType = s.LockReasonType, - LockReasonTypeName = s.LockReasonType == "0" ? "3C認證工單" : - s.LockReasonType == "1" ? "驗證工單" : "維修換料待分析", - LockType = s.LockType, - StationName = s.Stations.StationName - }).ToListAsync(); - - - + result.Data = await q.ToListAsync(); return result; } @@ -174,7 +179,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES /// [Route("[action]")] [HttpPost] - public async Task> PostWipLockByItemNo(string itemNo,string lockReason,string lockUserNo) + public async Task> PostWipLockByItemNo(string itemNo, string lockReason, string lockUserNo) { ResultModel result = new ResultModel(); Helper helper = new Helper(_context); @@ -199,7 +204,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES a.StatusNO, b.ItemNO }; - q = q.Where(w => !w.StatusNO.Equals("E")&& !w.StatusNO.Equals("C")); + q = q.Where(w => !w.StatusNO.Equals("E") && !w.StatusNO.Equals("C")); if (itemNo != null) { @@ -243,7 +248,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES } } } - + } return result; } @@ -287,6 +292,8 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES wiplock.UnLockDate = DateTime.Now; // 指定更新某個欄位 _context.Entry(wiplock).Property(p => p.UnLockReason).IsModified = true; + _context.Entry(wiplock).Property(p => p.UnLockDate).IsModified = true; + _context.Entry(wiplock).Property(p => p.UnLockUserID).IsModified = true; try { await _context.SaveChangesAsync(); diff --git a/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs b/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs index f6fbe239..653822f5 100644 --- a/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs +++ b/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs @@ -1678,6 +1678,17 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES } } + // 已投入數量>=工單數量 + if (CheckNowFirstStation(wipNo, unitNo, stationID) == "Y") + { + var FirstWipInfo = WipNoItem.FirstOrDefault(); + if (FirstWipInfo.CompleteQTY >= FirstWipInfo.PlanQTY) + { + resultModel.Msg = "工單號碼【" + wipNo + "】,已投入數量>=工單數量,請在確認"; + return resultModel; + } + } + // 該筆工單號碼鎖定 WipLockController wipLockController = new WipLockController(_context); var q3 = await wipLockController.GetWipLockByWipNO(wipNo); diff --git a/AMESCoreStudio.WebApi/DTO/AMES/WipLockDto.cs b/AMESCoreStudio.WebApi/DTO/AMES/WipLockDto.cs index 1ef8e47e..99278635 100644 --- a/AMESCoreStudio.WebApi/DTO/AMES/WipLockDto.cs +++ b/AMESCoreStudio.WebApi/DTO/AMES/WipLockDto.cs @@ -44,8 +44,11 @@ namespace AMESCoreStudio.WebApi.DTO.AMES /// /// 站別ID /// + public int StationID { get; set; } - + /// + /// 站別ID + /// public string StationName { get; set; } /// /// 鎖定類型 @@ -65,7 +68,13 @@ namespace AMESCoreStudio.WebApi.DTO.AMES /// /// 鎖定人員 /// - public decimal LockUserID { get; set; } + public int LockUserID { get; set; } + + + /// + /// 鎖定人員名稱 + /// + public string LockUserName { get; set; } /// /// 鎖定日期 @@ -75,7 +84,12 @@ namespace AMESCoreStudio.WebApi.DTO.AMES /// /// 解鎖人員 /// - public decimal? UnLockUserID { get; set; } + public int? UnLockUserID { get; set; } + + /// + /// 解鎖人員名稱 + /// + public string UnLockUserName { get; set; } /// /// 解鎖日期 diff --git a/AMESCoreStudio.WebApi/Models/AMES/WipLock.cs b/AMESCoreStudio.WebApi/Models/AMES/WipLock.cs index c6476c27..cf853bbe 100644 --- a/AMESCoreStudio.WebApi/Models/AMES/WipLock.cs +++ b/AMESCoreStudio.WebApi/Models/AMES/WipLock.cs @@ -62,8 +62,6 @@ namespace AMESCoreStudio.WebApi.Models.AMES [DataMember] [Required(ErrorMessage = "{0},不能空白")] [Display(Name = "站別ID")] - - public int StationID { get; set; } = 0; /// diff --git a/AMESCoreStudio.WebApi/Models/AMES/WipMAC.cs b/AMESCoreStudio.WebApi/Models/AMES/WipMAC.cs index 2334b40b..78376e3b 100644 --- a/AMESCoreStudio.WebApi/Models/AMES/WipMAC.cs +++ b/AMESCoreStudio.WebApi/Models/AMES/WipMAC.cs @@ -44,6 +44,14 @@ namespace AMESCoreStudio.WebApi.Models.AMES [Display(Name = "MAC迄")] public string EndNO { get; set; } + /// + /// 工單綁定MAC數量 + /// + [Column("QTY")] + [DataMember] + [Display(Name = "MAC數量")] + public int Qty { get; set; } + /// /// 前綴 ///