From 9ca82eb4d34cc4b2c9d8ff70611d43132a829691 Mon Sep 17 00:00:00 2001
From: Ray <raylin@aten.com>
Date: Fri, 17 Feb 2023 16:51:38 +0800
Subject: [PATCH] =?UTF-8?q?1.=20=E7=94=9F=E7=94=A2=E9=80=B2=E5=BA=A6?=
 =?UTF-8?q?=E6=9F=A5=E8=A9=A2=E5=8A=A0=E5=85=A5=20=E5=B7=A5=E5=96=AE?=
 =?UTF-8?q?=E7=8B=80=E6=85=8B=E6=9F=A5=E8=A9=A2=E5=8F=8A=E5=AE=8C=E5=B7=A5?=
 =?UTF-8?q?=E6=95=B8=E9=87=8F=E9=A1=AF=E7=A4=BA=202.=20=E9=81=8E=E7=AB=99?=
 =?UTF-8?q?=E5=8F=96=E6=B6=88MAC=E5=8D=80=E9=96=93=E5=88=A4=E6=96=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../Controllers/QRSController.cs              |  35 +++++-
 AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs      |   2 +-
 AMESCoreStudio.Web/Views/QRS/QRS011.cshtml    |  29 ++++-
 .../Controllers/AMES/WipInfosController.cs    |   8 +-
 .../Controllers/BLL/BarCodeCheckController.cs | 118 +++++++++---------
 5 files changed, 122 insertions(+), 70 deletions(-)

diff --git a/AMESCoreStudio.Web/Controllers/QRSController.cs b/AMESCoreStudio.Web/Controllers/QRSController.cs
index dd2b2c38..8dcf5944 100644
--- a/AMESCoreStudio.Web/Controllers/QRSController.cs
+++ b/AMESCoreStudio.Web/Controllers/QRSController.cs
@@ -405,11 +405,19 @@ namespace AMESCoreStudio.Web.Controllers
             return View();
         }
 
-        public async Task<IActionResult> QRS011AAsync(string unitNo, string itemNO, string wipNO)
+        /// <summary>
+        /// 生產進度查詢
+        /// </summary>
+        /// <param name="unitNo">生產製程</param>
+        /// <param name="itemNO">料號</param>
+        /// <param name="wipNO">工單號碼</param>
+        /// <param name="wipStatus">工單狀態:N(未完工) E(已完工)</param>
+        /// <returns></returns>
+        public async Task<IActionResult> QRS011AAsync(string unitNo, string itemNO, string wipNO, string wipStatus)
         {
             ViewData["Title"] = "查詢條件 - 製程代碼 : " + unitNo + "; 料號 : " + itemNO + "; 工單號碼 : " + wipNO;
 
-            IResultModel<dynamic> result = await _pcsApi.GetWipInfo4QRS011(unitNo, itemNO, wipNO);
+            IResultModel<dynamic> result = await _pcsApi.GetWipInfo4QRS011(unitNo, itemNO, wipNO, wipStatus);
 
             string wipDataList = "<font size='3'>";
             if (result.DataTotal > 0)
@@ -474,6 +482,23 @@ namespace AMESCoreStudio.Web.Controllers
                                 }
                             }
 
+                            // 完工站(1000)PASS資料 抓上一站PASS數
+                            if (rule_sation[j].StationID == 1000)
+                            {
+                               wip_station = await _pcsApi.GetWipStation4QRS009Group(wip_id, rule_sation[j - 1].StationID);
+                                if (wip_station.DataTotal > 0)
+                                {
+                                    foreach (var data in wip_station.Data)
+                                    {
+                                        JObject j0 = JObject.Parse(data.ToString());
+                                        if (j0["ruleStatus"].ToString() == "P")
+                                        {
+                                            okQty = int.Parse(j0["firstCnt"].ToString());
+                                        }
+                                    }
+                                }
+                            }
+
                             //stationQty = stationQty + "<td width='150' style='text-align:left'><a href=\"javascript:hg.open('過站PASS條碼資料','/QRS/QRS009P/" + wip_id + "_" + rule_sation[j].RuleStationID + "','','',true);\">" + okQty + "</a>/<a href=\"javascript:hg.open('過站FAIL條碼資料','/QRS/QRS009F','','',true);\">" + ngQty + "</a></td>";
                             stationQty = stationQty + "<td width='150' style='text-align:left'><a href=\"javascript:hg.open('過站PASS條碼資料','/QRS/QRS009P/" + wip_id + "_" + rule_sation[j].StationID + "',800,600);\">" + okQty + "</a>/<a href=\"javascript:hg.open('過站FAIL條碼資料','/QRS/QRS009F/" + wip_id + "_" + rule_sation[j].StationID + "',800,600);\">" + ngQty + "</a></td>";
 
@@ -994,7 +1019,7 @@ namespace AMESCoreStudio.Web.Controllers
 
             var result = await _pcsApi.GetWipInfo4QRS013(wipNO, factoryNo, page, limit);
 
-            string cols= @"";
+            string cols = @"";
 
             ViewBag.ColList = cols;
 
@@ -1503,7 +1528,7 @@ namespace AMESCoreStudio.Web.Controllers
                                     {
                                         if (kp_name.StartsWith("MB") && kp_name.IndexOf("MAC") > 0)
                                         {
-                                            
+
                                             kpDataList = kpDataList + "<td width = '160' style = 'text-align:left'>&nbsp;" + kp_name + "</td>";
                                         }
                                         else
@@ -1643,7 +1668,7 @@ namespace AMESCoreStudio.Web.Controllers
             return View();
         }
 
-        public async Task<IActionResult> QRS018D(string wipNO,string stationID,string partNO)
+        public async Task<IActionResult> QRS018D(string wipNO, string stationID, string partNO)
         {
             var station = await _basApi.GetStations(int.Parse(stationID));
 
diff --git a/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs b/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs
index 6bcd6270..c5d59a6d 100644
--- a/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs
+++ b/AMESCoreStudio.Web/HttpApis/AMES/IPCS.cs
@@ -1042,7 +1042,7 @@ namespace AMESCoreStudio.Web
         /// </summary>
         /// <returns></returns>
         [WebApiClient.Attributes.HttpGet("api/WipInfos/GetWipInfo4QRS011")]
-        ITask<ResultModel<dynamic>> GetWipInfo4QRS011(string unitNo, string itemNO, string wipNO);
+        ITask<ResultModel<dynamic>> GetWipInfo4QRS011(string unitNo, string itemNO, string wipNO , string wipStatus);
 
         #endregion
 
diff --git a/AMESCoreStudio.Web/Views/QRS/QRS011.cshtml b/AMESCoreStudio.Web/Views/QRS/QRS011.cshtml
index 19e564f1..39abd670 100644
--- a/AMESCoreStudio.Web/Views/QRS/QRS011.cshtml
+++ b/AMESCoreStudio.Web/Views/QRS/QRS011.cshtml
@@ -15,10 +15,21 @@
     <div class="layui-form">
         <div class="layui-row">
             <div class="layui-form-item">
+                <div class="layui-col-sm2">
+                    <div class="layui-inline">
+                        <label class="layui-form-label">工單狀態:</label>
+                        <div class="layui-input-inline" style="width:100px">
+                            <select id="wipStatus" lay-filter="wipStatus" lay-verify="required" lay-submit>
+                                <option value="A">未完工</option>
+                                <option value="E">已完工</option>
+                            </select>
+                        </div>
+                    </div>
+                </div>
                 <div class="layui-col-sm3">
                     <div class="layui-inline">
                         <label class="layui-form-label">生產單位:</label>
-                        <div class="layui-input-inline">
+                        <div class="layui-input-inline" >
                             <select id="unit" lay-filter="unit" lay-verify="required" lay-submit asp-items="@ViewBag.UnitList">
                                 <option value="*">全部</option>
                             </select>
@@ -54,8 +65,10 @@
     </div>
 </div>
 @section Scripts{
-    @{ await Html.RenderPartialAsync("_ValidationScriptsPartial");
-        await Html.RenderPartialAsync("_FileinputScriptsPartial"); }
+    @{
+        await Html.RenderPartialAsync("_ValidationScriptsPartial");
+        await Html.RenderPartialAsync("_FileinputScriptsPartial");
+    }
     <script type="text/javascript">
         layui.use(['form', 'layer', 'laydate'], function () {
             var form = layui.form;
@@ -65,9 +78,17 @@
             var unitNo = $("#unit").val();
             var itemNO = $("#itemNO").val();
             var wipNO = $("#wipNO").val();
+            var wipStatus = $("#wipStatus").val();
 
+            console.log(wipNO);
+            // 工單狀態選已完工 必須要有工單號碼
+            if (wipStatus == "E" && wipNO == '')
+            {
+                layer.alert('要查詢工單狀態已完工,必須要輸入工單號碼');
+                return;
+            }
 
-            var query = "?unitNo=" + unitNo + "&itemNO=" + itemNO + "&wipNO=" + wipNO;
+            var query = `?unitNo=${unitNo}&itemNO=${itemNO}&wipNO=${wipNO}&wipStatus=${wipStatus}`;
             hg.open('生產進度查詢', '/QRS/QRS011A' + query, '', '', true);
 
         };
diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs
index 6d20ff26..f9785462 100644
--- a/AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs
+++ b/AMESCoreStudio.WebApi/Controllers/AMES/WipInfosController.cs
@@ -172,10 +172,14 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
         /// <summary>
         /// 查詢工單資料QRS011
         /// </summary>
+        /// <param name="unitNo">生產製程</param>
+        /// <param name="itemNO">料號</param>
+        /// <param name="wipNO">工單號碼</param>
+        /// <param name="wipStatus">工單狀態:N(未完工) E(已完工)</param>
         /// <returns></returns>
         [Route("[action]")]
         [HttpGet]
-        public async Task<ResultModel<dynamic>> GetWipInfo4QRS011(string unitNo, string itemNO, string wipNO)
+        public async Task<ResultModel<dynamic>> GetWipInfo4QRS011(string unitNo, string itemNO, string wipNO , string wipStatus = "A")
         {
             ResultModel<dynamic> result = new ResultModel<dynamic>();
             var q = from q1 in _context.WipInfos
@@ -198,7 +202,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
                         q4.UnitName
                     };
 
-            q = q.Where(w => w.StatusNO == "A");
+            q = q.Where(w => w.StatusNO == wipStatus);
             if (unitNo != "*")
             {
                 q = q.Where(w => w.UnitNO == unitNo);
diff --git a/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs b/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs
index 232417ce..66bf4b54 100644
--- a/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs
+++ b/AMESCoreStudio.WebApi/Controllers/BLL/BarCodeCheckController.cs
@@ -281,35 +281,36 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
                                     #endregion
 
                                     #region 判斷MAC區間
-                                    if (q_Kp.KpNo.ToUpper() == "MAC")
-                                    {
-
-                                        var wipMAC = await wipMACController.GetWipMAC(barCodeCheckDto.wipNo);
-                                        if (wipMAC.Value == null)
-                                        {
-                                            resultModel.Msg += "工單號碼【" + barCodeCheckDto.wipNo + "】 找不到綁定MAC區間</br>";
-                                        }
-                                        else
-                                        {
-                                            // 判斷MAC前置碼是否一樣
-                                            if (!KPs.inputData.StartsWith(wipMAC.Value.Title))
-                                            {
-                                                resultModel.Msg += "組件序號【" + KPs.inputData + "】 與MAC【" + wipMAC.Value.Title + "】前置碼不符合 </br>";
-                                            }
-                                            else
-                                            {
-                                                // 判斷是否符合區間
-                                                if (KPs.inputData.Length == 12)
-                                                {
-                                                    if (!(Convert.ToInt32(wipMAC.Value.StartNO, 16) <= Convert.ToInt32(KPs.inputData.Substring(6, 6), 16)
-                                                        && Convert.ToInt32(KPs.inputData.Substring(6, 6), 16) <= Convert.ToInt32(wipMAC.Value.EndNO, 16)))
-                                                    {
-                                                        resultModel.Msg += "組件序號【" + KPs.inputData + "】 與工單設定MAC區間不符合 </br>";
-                                                    }
-                                                }
-                                            }
-                                        }
-                                    }
+                                    // 安勤不需要判斷MAC區間
+                                    //if (q_Kp.KpNo.ToUpper() == "MAC")
+                                    //{
+
+                                    //    var wipMAC = await wipMACController.GetWipMAC(barCodeCheckDto.wipNo);
+                                    //    if (wipMAC.Value == null)
+                                    //    {
+                                    //        resultModel.Msg += "工單號碼【" + barCodeCheckDto.wipNo + "】 找不到綁定MAC區間</br>";
+                                    //    }
+                                    //    else
+                                    //    {
+                                    //        // 判斷MAC前置碼是否一樣
+                                    //        if (!KPs.inputData.StartsWith(wipMAC.Value.Title))
+                                    //        {
+                                    //            resultModel.Msg += "組件序號【" + KPs.inputData + "】 與MAC【" + wipMAC.Value.Title + "】前置碼不符合 </br>";
+                                    //        }
+                                    //        else
+                                    //        {
+                                    //            // 判斷是否符合區間
+                                    //            if (KPs.inputData.Length == 12)
+                                    //            {
+                                    //                if (!(Convert.ToInt32(wipMAC.Value.StartNO, 16) <= Convert.ToInt32(KPs.inputData.Substring(6, 6), 16)
+                                    //                    && Convert.ToInt32(KPs.inputData.Substring(6, 6), 16) <= Convert.ToInt32(wipMAC.Value.EndNO, 16)))
+                                    //                {
+                                    //                    resultModel.Msg += "組件序號【" + KPs.inputData + "】 與工單設定MAC區間不符合 </br>";
+                                    //                }
+                                    //            }
+                                    //        }
+                                    //    }
+                                    //}
                                     #endregion
 
                                     #region 判斷出貨序號
@@ -1929,35 +1930,36 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES
                         #endregion
 
                         #region 判斷MAC區間
-                        if (wipKpsItem.KpNo.ToUpper() == "MAC")
-                        {
-                            WipMACController wipMACController = new WipMACController(_context);
-                            var wipMAC = await wipMACController.GetWipMAC(barcodeItemKPDto.WipNo);
-                            if (wipMAC.Value == null)
-                            {
-                                CheckMsg += "工單號碼【" + barcodeItemKPDto.WipNo + "】 找不到綁定MAC區間</br>";
-                            }
-                            else
-                            {
-                                // 判斷MAC前置碼是否一樣
-                                if (!barcodeKPDtoItem.inputData.StartsWith(wipMAC.Value.Title))
-                                {
-                                    CheckMsg += "組件序號【" + barcodeKPDtoItem.inputData + "】 與MAC【" + wipMAC.Value.Title + "】前置碼不符合 </br>";
-                                }
-                                else
-                                {
-                                    // 判斷是否符合區間
-                                    if (barcodeKPDtoItem.inputData.Length == 12)
-                                    {
-                                        if (!(Convert.ToInt32(wipMAC.Value.StartNO, 16) <= Convert.ToInt32(barcodeKPDtoItem.inputData.Substring(6, 6), 16)
-                                            && Convert.ToInt32(barcodeKPDtoItem.inputData.Substring(6, 6), 16) <= Convert.ToInt32(wipMAC.Value.EndNO, 16)))
-                                        {
-                                            CheckMsg += "組件序號【" + barcodeKPDtoItem.inputData + "】 與工單設定MAC區間不符合 </br>";
-                                        }
-                                    }
-                                }
-                            }
-                        }
+                        // 安勤不需要判斷MAC區間
+                        //if (wipKpsItem.KpNo.ToUpper() == "MAC")
+                        //{
+                        //    WipMACController wipMACController = new WipMACController(_context);
+                        //    var wipMAC = await wipMACController.GetWipMAC(barcodeItemKPDto.WipNo);
+                        //    if (wipMAC.Value == null)
+                        //    {
+                        //        CheckMsg += "工單號碼【" + barcodeItemKPDto.WipNo + "】 找不到綁定MAC區間</br>";
+                        //    }
+                        //    else
+                        //    {
+                        //        // 判斷MAC前置碼是否一樣
+                        //        if (!barcodeKPDtoItem.inputData.StartsWith(wipMAC.Value.Title))
+                        //        {
+                        //            CheckMsg += "組件序號【" + barcodeKPDtoItem.inputData + "】 與MAC【" + wipMAC.Value.Title + "】前置碼不符合 </br>";
+                        //        }
+                        //        else
+                        //        {
+                        //            // 判斷是否符合區間
+                        //            if (barcodeKPDtoItem.inputData.Length == 12)
+                        //            {
+                        //                if (!(Convert.ToInt32(wipMAC.Value.StartNO, 16) <= Convert.ToInt32(barcodeKPDtoItem.inputData.Substring(6, 6), 16)
+                        //                    && Convert.ToInt32(barcodeKPDtoItem.inputData.Substring(6, 6), 16) <= Convert.ToInt32(wipMAC.Value.EndNO, 16)))
+                        //                {
+                        //                    CheckMsg += "組件序號【" + barcodeKPDtoItem.inputData + "】 與工單設定MAC區間不符合 </br>";
+                        //                }
+                        //            }
+                        //        }
+                        //    }
+                        //}
                         #endregion
 
                         #region 判斷出貨序號