From 869738d1cdf4385203e7a5fc5e4f2735e9840d46 Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期三, 16 十月 2024 00:25:14 +0800
Subject: [PATCH] 优化工序逻辑

---
 Tiger.Business.MES/WorkAction/PackingAction.cs |  124 +++++++++++++++++++++--------------------
 1 files changed, 63 insertions(+), 61 deletions(-)

diff --git a/Tiger.Business.MES/WorkAction/PackingAction.cs b/Tiger.Business.MES/WorkAction/PackingAction.cs
index ab7c1f1..22a62cc 100644
--- a/Tiger.Business.MES/WorkAction/PackingAction.cs
+++ b/Tiger.Business.MES/WorkAction/PackingAction.cs
@@ -868,36 +868,37 @@
                     if (_pkgList.Any())
                     {
                         db.Storageable(_pkgList, CurPosition.UserCode).ExecuteCommand();
-                        foreach (var pkg in _pkgList.Where(q => !q.WIP_ID.IsNullOrEmpty()))
-                        {
-                            //鍖呰淇℃伅淇濆瓨鍒板湪鍒跺搧淇℃伅琛�
-                            db.Updateable<MES_WIP_DATA>()
-                                .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 == pkg.WORK_ORDER && q.ID == pkg.WIP_ID)
-                                .ExecuteCommand();
-                            //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц繃绋嬭褰�
-                            db.Updateable<MES_WIP_HIS>()
-                                .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 == pkg.WORK_ORDER && q.WIP_ID == pkg.WIP_ID && q.NODE_ID == pkg.NODE_ID)
-                                .ExecuteCommand();
-                            //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц涓鸿褰�
-                            db.Updateable<MES_WIP_ACT>()
-                                .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 == pkg.WORK_ORDER && q.WIP_ID == pkg.WIP_ID && q.NODE_ID == pkg.NODE_ID && q.ACT_ID == pkg.ACT_ID)
-                                .ExecuteCommand();
-                            //鍖呰淇℃伅淇濆瓨鍒板伐鍗曟潯鐮佹槑缁嗚〃
-                            db.Updateable<BIZ_MES_WO_SN>()
-                                .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN)
-                                .SetColumns(q => q.OUTER_SN == CurPkg.Item.Package.SN)
-                                .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.WIP_ID == pkg.WIP_ID)
-                                .ExecuteCommand();
-                        }
+                        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;
+                        //鍖呰淇℃伅淇濆瓨鍒板湪鍒跺搧淇℃伅琛�
+                        db.Updateable<MES_WIP_DATA>()
+                            .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))
+                            .ExecuteCommand();
+                        //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц繃绋嬭褰�
+                        db.Updateable<MES_WIP_HIS>()
+                            .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))
+                            .ExecuteCommand();
+                        //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц涓鸿褰�
+                        db.Updateable<MES_WIP_ACT>()
+                            .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))
+                            .ExecuteCommand();
+                        //鍖呰淇℃伅淇濆瓨鍒板伐鍗曟潯鐮佹槑缁嗚〃
+                        db.Updateable<BIZ_MES_WO_SN>()
+                            .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))
+                            .ExecuteCommand();
                     }
                 };
             }
@@ -916,37 +917,38 @@
                         if (_pkgList.Any())
                         {
                             db.Storageable(_pkgList, CurPosition.UserCode).ExecuteCommand();
-                            foreach (var pkg in _pkgList.Where(q => !q.WIP_ID.IsNullOrEmpty()))
-                            {
-                                //鍖呰淇℃伅淇濆瓨鍒板湪鍒跺搧淇℃伅琛�
-                                db.Updateable<MES_WIP_DATA>()
-                                    .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 == pkg.WORK_ORDER && q.ID == pkg.WIP_ID)
-                                    .ExecuteCommand();
-                                //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц繃绋嬭褰�
-                                var endOperCode = CurPkg.IsReachedEndNode ? "EndNode" : "NotReachedEndNode";
-                                db.Updateable<MES_WIP_HIS>()
-                                    .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 == pkg.WORK_ORDER && q.WIP_ID == pkg.WIP_ID && (q.NODE_ID == pkg.NODE_ID || q.OPER_CODE == endOperCode))
-                                    .ExecuteCommand();
-                                //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц涓鸿褰�
-                                db.Updateable<MES_WIP_ACT>()
-                                    .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 == pkg.WORK_ORDER && q.WIP_ID == pkg.WIP_ID && q.NODE_ID == pkg.NODE_ID && q.ACT_ID == pkg.ACT_ID)
-                                    .ExecuteCommand();
-                                //鍖呰淇℃伅淇濆瓨鍒板伐鍗曟潯鐮佹槑缁嗚〃
-                                db.Updateable<BIZ_MES_WO_SN>()
-                                    .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN)
-                                    .SetColumns(q => q.OUTER_SN == CurPkg.Item.Package.SN)
-                                    .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.WIP_ID == pkg.WIP_ID)
-                                    .ExecuteCommand();
-                            }
+                            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;
+                            //鍖呰淇℃伅淇濆瓨鍒板湪鍒跺搧淇℃伅琛�
+                            db.Updateable<MES_WIP_DATA>()
+                                .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))
+                                .ExecuteCommand();
+                            //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц繃绋嬭褰�
+                            var endOperCode = CurPkg.IsReachedEndNode ? "EndNode" : "NotReachedEndNode";
+                            db.Updateable<MES_WIP_HIS>()
+                                .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))
+                                .ExecuteCommand();
+                            //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц涓鸿褰�
+                            db.Updateable<MES_WIP_ACT>()
+                                .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))
+                                .ExecuteCommand();
+                            //鍖呰淇℃伅淇濆瓨鍒板伐鍗曟潯鐮佹槑缁嗚〃
+                            db.Updateable<BIZ_MES_WO_SN>()
+                                .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))
+                                .ExecuteCommand();
                         }
                     });
                     //濡傛灉褰撳墠鏉$爜宸茬粡瀹屽伐锛屾鏌ュ綋鍓嶅伐鍗曟壒娆″拰宸ュ崟鏄惁瀹屽伐

--
Gitblit v1.9.3