From 97edd18da0049ca22fa452618639469ab40ef0e6 Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期二, 19 十一月 2024 14:45:46 +0800
Subject: [PATCH] 优化包装行为获取包装在制品ID的获取方法

---
 Tiger.Business.MES/WorkAction/PackingAction.cs |   24 +++++++++++++-----------
 1 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/Tiger.Business.MES/WorkAction/PackingAction.cs b/Tiger.Business.MES/WorkAction/PackingAction.cs
index 184758f..1ac272a 100644
--- a/Tiger.Business.MES/WorkAction/PackingAction.cs
+++ b/Tiger.Business.MES/WorkAction/PackingAction.cs
@@ -882,7 +882,8 @@
 
                 //鍒涘缓鍙橀噺鍏嬮殕瀵硅薄鐢ㄤ簬浼犲叆DBSubmitAction涓繚瀛樺綋鍓嶉渶瑕佹殏瀛樼殑鏁版嵁鍊�
                 var _wipActs = wipActs.Clone();
-                var _pkgList = CurPkg.IsFinished ? CurPosition.GetPackageList(CurPkg.Item) : new();
+                var _pkgList = CurPkg.IsFinished ? CurPosition.GetPackageList(CurPkg.Item).Clone() : new();
+                var _wipIDs = CurPkg.IsFinished ? CurPkg.Item.GetWipSnList().Select(q => q.Key).ToList().Clone() : new();
                 //淇濆瓨鏁版嵁
                 CurStep.DBSubmitAction = () =>
                 {
@@ -894,7 +895,7 @@
                     if (_pkgList.Any())
                     {
                         db.Storageable(_pkgList, CurPosition.UserCode).ExecuteCommand();
-                        var wipIDs = _pkgList.Where(q => !q.WIP_ID.IsNullOrEmpty()).Select(q => q.WIP_ID).ToList();
+                        //var wipIDs = _pkgList.Where(q => !q.WIP_ID.IsNullOrEmpty()).Select(q => q.WIP_ID).ToList();
                         var nodeID = _pkgList.First().NODE_ID;
                         var actID = _pkgList.First().ACT_ID;
                         var wo = _pkgList.First().WORK_ORDER;
@@ -903,27 +904,27 @@
                             .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN)
                             .SetColumns(q => q.INNER_SN == q.CARTON_SN)
                             .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN)
-                            .Where(q => q.WORK_ORDER == wo && wipIDs.Contains(q.ID))
+                            .Where(q => q.WORK_ORDER == wo && _wipIDs.Contains(q.ID))
                             .ExecuteCommand();
                         //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц繃绋嬭褰�
                         db.Updateable<MES_WIP_HIS>(CurPosition.UserCode)
                             .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN)
                             .SetColumns(q => q.INNER_SN == q.CARTON_SN)
                             .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN)
-                            .Where(q => q.WORK_ORDER == wo && q.NODE_ID == nodeID && wipIDs.Contains(q.WIP_ID))
+                            .Where(q => q.WORK_ORDER == wo && q.NODE_ID == nodeID && _wipIDs.Contains(q.WIP_ID))
                             .ExecuteCommand();
                         //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц涓鸿褰�
                         db.Updateable<MES_WIP_ACT>(CurPosition.UserCode)
                             .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN)
                             .SetColumns(q => q.INNER_SN == q.CARTON_SN)
                             .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN)
-                            .Where(q => q.WORK_ORDER == wo && q.NODE_ID == nodeID && q.ACT_ID == actID && wipIDs.Contains(q.WIP_ID))
+                            .Where(q => q.WORK_ORDER == wo && q.NODE_ID == nodeID && q.ACT_ID == actID && _wipIDs.Contains(q.WIP_ID))
                             .ExecuteCommand();
                         //鍖呰淇℃伅淇濆瓨鍒板伐鍗曟潯鐮佹槑缁嗚〃
                         db.Updateable<BIZ_MES_WO_SN>(CurPosition.UserCode)
                             .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN)
                             .SetColumns(q => q.OUTER_SN == CurPkg.Item.Package.SN)
-                            .Where(q => q.WORK_ORDER == wo && wipIDs.Contains(q.WIP_ID))
+                            .Where(q => q.WORK_ORDER == wo && _wipIDs.Contains(q.WIP_ID))
                             .ExecuteCommand();
                     }
                 };
@@ -933,6 +934,7 @@
                 if (CurPkg.IsFinished)
                 {
                     var _pkgList = CurPosition.GetPackageList(CurPkg.Item).Clone();
+                    var _wipIDs = CurPkg.Item.GetWipSnList().Select(q => q.Key).ToList().Clone();
                     var _lastWipID = CurPosition.LastWipSNs?.FirstOrDefault()?.ID;
 
                     //鏈�澶栧眰鍖呰宸茬粡瀹屾垚鍖呰锛屽垯鎶婂伐搴忎腑鏆傚瓨鏍囪璁句负false锛岀粺涓�鎻愪氦鍖呰鍐呬骇鍝佺殑杩囩珯璁板綍
@@ -944,7 +946,7 @@
                         if (_pkgList.Any())
                         {
                             db.Storageable(_pkgList, CurPosition.UserCode).ExecuteCommand();
-                            var wipIDs = _pkgList.Where(q => !q.WIP_ID.IsNullOrEmpty()).Select(q => q.WIP_ID).ToList();
+                            //var wipIDs = _pkgList.Where(q => !q.WIP_ID.IsNullOrEmpty()).Select(q => q.WIP_ID).ToList();
                             var nodeID = _pkgList.First(q => !q.WIP_ID.IsNullOrEmpty()).NODE_ID;
                             var actID = _pkgList.First(q => !q.WIP_ID.IsNullOrEmpty()).ACT_ID;
                             var wo = _pkgList.First(q => !q.WIP_ID.IsNullOrEmpty()).WORK_ORDER;
@@ -953,7 +955,7 @@
                                 .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN)
                                 .SetColumns(q => q.INNER_SN == q.CARTON_SN)
                                 .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN)
-                                .Where(q => q.WORK_ORDER == wo && wipIDs.Contains(q.ID))
+                                .Where(q => q.WORK_ORDER == wo && _wipIDs.Contains(q.ID))
                                 .ExecuteCommand();
                             //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц繃绋嬭褰�
                             var endOperCode = CurPkg.IsReachedEndNode ? "EndNode" : "NotReachedEndNode";
@@ -961,14 +963,14 @@
                                 .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN)
                                 .SetColumns(q => q.INNER_SN == q.CARTON_SN)
                                 .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN)
-                                .Where(q => q.WORK_ORDER == wo && (q.NODE_ID == nodeID || q.OPER_CODE == endOperCode) && wipIDs.Contains(q.WIP_ID))
+                                .Where(q => q.WORK_ORDER == wo && (q.NODE_ID == nodeID || q.OPER_CODE == endOperCode) && _wipIDs.Contains(q.WIP_ID))
                                 .ExecuteCommand();
                             //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц涓鸿褰�
                             db.Updateable<MES_WIP_ACT>(CurPosition.UserCode)
                                 .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN)
                                 .SetColumns(q => q.INNER_SN == q.CARTON_SN)
                                 .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN)
-                                .Where(q => q.WORK_ORDER == wo && q.NODE_ID == nodeID && q.ACT_ID == actID && wipIDs.Contains(q.WIP_ID))
+                                .Where(q => q.WORK_ORDER == wo && q.NODE_ID == nodeID && q.ACT_ID == actID && _wipIDs.Contains(q.WIP_ID))
                                 .ExecuteCommand();
                             db.Updateable<MES_WIP_ACT>(CurPosition.UserCode)
                                 .SetColumns(q => q.ACT_VALUE_1 == (CurPkg.IsFinished ? "Y" : "N"))
@@ -989,7 +991,7 @@
                             db.Updateable<BIZ_MES_WO_SN>(CurPosition.UserCode)
                                 .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN)
                                 .SetColumns(q => q.OUTER_SN == CurPkg.Item.Package.SN)
-                                .Where(q => q.WORK_ORDER == wo && wipIDs.Contains(q.WIP_ID))
+                                .Where(q => q.WORK_ORDER == wo && _wipIDs.Contains(q.WIP_ID))
                                 .ExecuteCommand();
                         }
                     });

--
Gitblit v1.9.3