From a592da60f0db0d4eb950a81a8530e965444be7b1 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期三, 16 十月 2024 09:14:02 +0800
Subject: [PATCH] 工艺路线默认优化

---
 Tiger.Business.MES/WorkAction/PackingAction.cs |  289 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 148 insertions(+), 141 deletions(-)

diff --git a/Tiger.Business.MES/WorkAction/PackingAction.cs b/Tiger.Business.MES/WorkAction/PackingAction.cs
index f01a286..ae3603a 100644
--- a/Tiger.Business.MES/WorkAction/PackingAction.cs
+++ b/Tiger.Business.MES/WorkAction/PackingAction.cs
@@ -29,7 +29,7 @@
         public WipPkgItem CurPkgItem { get; set; }
         public PackingActionOutput CurCmd { get; set; }
         public int PrintTimes = 0;
-        public Dictionary<int, BAS_LABEL_TEMP> LabelDic { get; set; }    = new();
+        public Dictionary<int, BAS_LABEL_TEMP> LabelDic { get; set; } = new();
         public List<BAS_LABEL_PV> LabelPV { get; set; } = new();
         public int FinishLevel = 0;
         private bool IsManually => CurStep.IsNullOrEmpty();
@@ -53,7 +53,7 @@
             PkgRule = Biz.Db.Queryable<BAS_PKG_RULE>().Where(q => q.RULE_CODE == setting.PKG_CODE).IncludesAllFirstLayer().IncludesAllSecondLayer(q => q.Details).First();
 
             //鏍规嵁琛屼负璁剧疆鑾峰彇澶氬眰鍖呰鐨勬爣绛炬墦鍗版ā鏉垮瓧鍏�
-            var codes = (Setting.OPTION_1 ?? "").JsonToObject<List<WipPkgItem>>()?? new List<WipPkgItem>();
+            var codes = (Setting.OPTION_1 ?? "").JsonToObject<List<WipPkgItem>>() ?? new List<WipPkgItem>();
             foreach (var code in codes)
             {
                 var label = code.LABEL_CODE.IsNullOrEmpty() ? null : Biz.Db.Queryable<BAS_LABEL_TEMP>().Where(q => q.LABEL_CODE == code.LABEL_CODE).IncludesAllFirstLayer().First();
@@ -74,7 +74,8 @@
                     WorkBatch = CurPosition.WorkBatch.Batch.BATCH_NO,
                     RULE_CODE = PkgRule.RULE_CODE,
                     RULE_NAME = PkgRule.RULE_NAME,
-                    ITEM_CODE = CurPosition.WorkBatch.WO.ITEM_CODE,
+                    PROD_CODE = CurPosition.WorkBatch.WO.ITEM_CODE,
+                    ITEM_CODE = Biz.Db.Queryable<MES_CUST_SN>().Where(q => q.FLOW_SN == CurPosition.CurWipSNs.First().FLOW_SN).First()?.ITEM_CODE,
                     Item = new WipPkgItem()
                     {
                         PKG_CODE = max.PKG_CODE,
@@ -82,7 +83,7 @@
                         IS_MIN_PKG = max.PkgType.IS_MIN_PKG,
                         PKG_LEVEL = max.PKG_LEVEL,
                         PKG_QTY = max.PKG_QTY,
-                        LABEL_CODE = LabelDic[max.PKG_LEVEL]?.LABEL_CODE,
+                        LABEL_CODE = LabelDic.Count > max.PKG_LEVEL ? LabelDic[max.PKG_LEVEL]?.LABEL_CODE : null,
                     }
                 };
                 WipPkgItem child = null;
@@ -97,7 +98,7 @@
                             IS_MIN_PKG = dtl.PkgType.IS_MIN_PKG,
                             PKG_LEVEL = dtl.PKG_LEVEL,
                             PKG_QTY = dtl.PKG_QTY,
-                            LABEL_CODE = LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE,
+                            LABEL_CODE = LabelDic.Count > dtl.PKG_LEVEL ? LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE : null,
                         };
                         if (!child.IsNullOrEmpty())
                         {
@@ -154,7 +155,8 @@
             LabelDic = CurPosition.Context["CurLabelDic"] as Dictionary<int, BAS_LABEL_TEMP>;
             LabelPV = Biz.Db.Queryable<BAS_LABEL_PV>().ToList();
             //鑾峰彇鍖呰瑙勫垯鐨勭О閲嶈寖鍥�
-            PkgProd = Biz.Db.Queryable<BAS_PKG_PROD>().Where(q => q.PKG_RULE_ID == PkgRule.ID && q.ITEM_CODE == CurPkg.ITEM_CODE).First();
+            PkgProd = Biz.Db.Queryable<BAS_PKG_PROD>().Where(q => q.PKG_RULE_ID == PkgRule.ID && q.ITEM_CODE == CurPkg.PROD_CODE).First();
+            //鎶�
 
             CurStep?.SetStatusMessage(StepStatus.Normal, Biz.L("璁板綍鍖呰鏁版嵁"));
         }
@@ -308,7 +310,7 @@
                             action.Data.ShortMsg = new("鎵弿鏍囩", ShortMessage.Types.Normal);
                             //action.LocaleMsg = new($"璇锋壂鎻忕{dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛炬潯鐮�");
                             action.LocaleMsg = new("MES.WorkAction.PackingAction.PleaseScanLabel", dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME);
-                        } 
+                        }
                         //瀹㈡埛绔墦鍗板け璐�
                         else
                         {
@@ -372,34 +374,34 @@
                             {
                                 //濡傛灉涓虹┖鍒欎笉闇�瑕佹墦鍗�
                                 if (LabelDic[dtl.PKG_LEVEL].IsNullOrEmpty())
-	                            {
-	                                var data = new PackingActionOutput() { PkgInfo = CurPkg };
-	                                data.ExecCode = "Scan";
-	                                data.PkgLevel = dtl.PKG_LEVEL;
-	                                CurCmd = data;
+                                {
+                                    var data = new PackingActionOutput() { PkgInfo = CurPkg };
+                                    data.ExecCode = "Scan";
+                                    data.PkgLevel = dtl.PKG_LEVEL;
+                                    CurCmd = data;
                                     CurStep?.SetStatusMessage(StepStatus.Normal, Biz.L("鎵弿鏍囩"));
                                     action.Data.Data = data;
-	                                action.Data.ShortMsg = new("鎵弿鏍囩", ShortMessage.Types.Normal);
-	                                //action.LocaleMsg = new($"璇锋壂鎻忕{dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛炬潯鐮�");
-	                                action.LocaleMsg = new("MES.WorkAction.PackingAction.PleaseScanLabel", dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME);
-	                            }
-	                            else
-	                            {
-	                                //璁剧疆鎵撳嵃鍙橀噺鍊�
-	                                LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL], this);
-	
-	                                var data = new PackingActionOutput() { PkgInfo = CurPkg };
-	                                data.ExecCode = "Print";
-	                                data.PkgLevel = dtl.PKG_LEVEL;
-	                                data.PrintLable = LabelDic[dtl.PKG_LEVEL];
-	                                CurCmd = data;
-	                                PrintTimes++;
+                                    action.Data.ShortMsg = new("鎵弿鏍囩", ShortMessage.Types.Normal);
+                                    //action.LocaleMsg = new($"璇锋壂鎻忕{dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛炬潯鐮�");
+                                    action.LocaleMsg = new("MES.WorkAction.PackingAction.PleaseScanLabel", dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME);
+                                }
+                                else
+                                {
+                                    //璁剧疆鎵撳嵃鍙橀噺鍊�
+                                    LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL], this);
+
+                                    var data = new PackingActionOutput() { PkgInfo = CurPkg };
+                                    data.ExecCode = "Print";
+                                    data.PkgLevel = dtl.PKG_LEVEL;
+                                    data.PrintLable = LabelDic[dtl.PKG_LEVEL];
+                                    CurCmd = data;
+                                    PrintTimes++;
                                     CurStep?.SetStatusMessage(StepStatus.Normal, Biz.L("鎵撳嵃鏍囩"));
                                     action.Data.Data = data;
-	                                action.Data.ShortMsg = new("鎵撳嵃鏍囩", ShortMessage.Types.Normal);
-	                                //action.LocaleMsg = new Locale($"寮�濮嬬{PrintTimes}娆℃墦鍗扮{dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛綶{LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE}: {LabelDic[dtl.PKG_LEVEL].LABEL_NAME}]");
-	                                action.LocaleMsg = new Locale("MES.WorkAction.PackingAction.BeginPrint", PrintTimes, dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME, LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE, LabelDic[dtl.PKG_LEVEL].LABEL_NAME);
-	                            }
+                                    action.Data.ShortMsg = new("鎵撳嵃鏍囩", ShortMessage.Types.Normal);
+                                    //action.LocaleMsg = new Locale($"寮�濮嬬{PrintTimes}娆℃墦鍗扮{dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛綶{LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE}: {LabelDic[dtl.PKG_LEVEL].LABEL_NAME}]");
+                                    action.LocaleMsg = new Locale("MES.WorkAction.PackingAction.BeginPrint", PrintTimes, dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME, LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE, LabelDic[dtl.PKG_LEVEL].LABEL_NAME);
+                                }
                             }
                         }
                         else
@@ -556,6 +558,7 @@
                     CurPkgItem.Package.POST_CODE = CurPosition.CurWipSNs.First().POST_CODE;
                     CurPkgItem.Package.OPER_CODE = CurPosition.CurWipSNs.First().OPER_CODE;
                     CurPkgItem.Package.SEGMENT = CurPosition.CurWipSNs.First().SEGMENT;
+                    CurPkgItem.Package.ACT_ID = NodeAct.ID;
                     FinishLevel++;
                     //瀹屾垚鍖呰鐨勫眰绾у皬浜庢渶澶栧眰鍖呰灞傜骇
                     if (FinishLevel < PkgRule.Details.Max(q => q.PKG_LEVEL))
@@ -571,7 +574,7 @@
                     }
                 }
                 //澶勭悊鍏朵粬鍖呰灞傜骇鏁版嵁
-                else 
+                else
                 {
                     //瀹㈡埛绔彁浜ょ殑鍖呰灞傜骇绛変簬褰撳墠澶勭悊鐨勫寘瑁呭眰绾�
                     if (pInput.PkgLevel == dtl.PKG_LEVEL)
@@ -617,6 +620,7 @@
                             POST_CODE = CurPosition.CurWipSNs.First().POST_CODE,
                             OPER_CODE = CurPosition.CurWipSNs.First().OPER_CODE,
                             SEGMENT = CurPosition.CurWipSNs.First().SEGMENT,
+                            ACT_ID = NodeAct.ID,
                         };
                         FinishLevel++;
                         //瀹屾垚鍖呰鐨勫眰绾у皬浜庢渶澶栧眰鍖呰灞傜骇
@@ -658,7 +662,7 @@
                         //娣诲姞褰撳墠鐨勫寘瑁呮槑缁嗗埌涓婁竴灞傚寘瑁呯殑鏄庣粏鍒楄〃
                         if (!curItem.Items.Contains(CurPkgItem))
                         {
-                        	    curItem.Items.Add(CurPkgItem);
+                            curItem.Items.Add(CurPkgItem);
                         }
                         CurPkgItem = curItem;
 
@@ -677,39 +681,39 @@
                                 action.Data.ShortMsg = new("涓婄О绉伴噸", ShortMessage.Types.Success);
                                 //action.LocaleMsg = new($"璇锋妸澶栧寘瑁呬笂绉扮О閲�");
                                 action.LocaleMsg = new("MES.WorkAction.PackingAction.PleaseWeighing");
-                            } 
+                            }
                             else
                             {
-	                            //濡傛灉涓虹┖鍒欎笉闇�瑕佹墦鍗�
-	                            if (LabelDic[dtl.PKG_LEVEL].IsNullOrEmpty())
-	                            {
-	                                var data = new PackingActionOutput() { PkgInfo = CurPkg };
-	                                data.ExecCode = "Scan";
-	                                data.PkgLevel = dtl.PKG_LEVEL;
-	                                CurCmd = data;
+                                //濡傛灉涓虹┖鍒欎笉闇�瑕佹墦鍗�
+                                if (LabelDic[dtl.PKG_LEVEL].IsNullOrEmpty())
+                                {
+                                    var data = new PackingActionOutput() { PkgInfo = CurPkg };
+                                    data.ExecCode = "Scan";
+                                    data.PkgLevel = dtl.PKG_LEVEL;
+                                    CurCmd = data;
                                     CurStep?.SetStatusMessage(StepStatus.Normal, Biz.L("鎵弿鏍囩"));
                                     action.Data.Data = data;
                                     action.Data.ShortMsg = new("鎵弿鏍囩", ShortMessage.Types.Normal);
                                     //action.LocaleMsg = new($"璇锋壂鎻忕{dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛炬潯鐮�");
                                     action.LocaleMsg = new("MES.WorkAction.PackingAction.PleaseScanLabel", dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME);
-	                            }
-	                            else
-	                            {
-	                                //璁剧疆鎵撳嵃鍙橀噺鍊�
-	                                LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL], this);
-	
-	                                var data = new PackingActionOutput() { PkgInfo = CurPkg };
-	                                data.ExecCode = "Print";
-	                                data.PkgLevel = dtl.PKG_LEVEL;
-	                                data.PrintLable = LabelDic[dtl.PKG_LEVEL];
-	                                CurCmd = data;
-	                                PrintTimes++;
+                                }
+                                else
+                                {
+                                    //璁剧疆鎵撳嵃鍙橀噺鍊�
+                                    LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL], this);
+
+                                    var data = new PackingActionOutput() { PkgInfo = CurPkg };
+                                    data.ExecCode = "Print";
+                                    data.PkgLevel = dtl.PKG_LEVEL;
+                                    data.PrintLable = LabelDic[dtl.PKG_LEVEL];
+                                    CurCmd = data;
+                                    PrintTimes++;
                                     CurStep?.SetStatusMessage(StepStatus.Normal, Biz.L("鎵撳嵃鏍囩"));
                                     action.Data.Data = data;
                                     action.Data.ShortMsg = new("鎵撳嵃鏍囩", ShortMessage.Types.Normal);
                                     //action.LocaleMsg = new Locale($"寮�濮嬬{PrintTimes}娆℃墦鍗扮{dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛綶{LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE}: {LabelDic[dtl.PKG_LEVEL].LABEL_NAME}]");
-                                    action.LocaleMsg = new Locale("MES.WorkAction.PackingAction.BeginPrint", PrintTimes, dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME, LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE, LabelDic[dtl.PKG_LEVEL].LABEL_NAME);                
-	                            }
+                                    action.LocaleMsg = new Locale("MES.WorkAction.PackingAction.BeginPrint", PrintTimes, dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME, LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE, LabelDic[dtl.PKG_LEVEL].LABEL_NAME);
+                                }
                             }
                         }
                         //褰撳墠鍖呰灞傜骇鐨勬槑缁嗘暟閲忔湭杈惧埌鍖呰鏁伴噺锛屽垯瀹屾垚鏈鎵弿锛岀瓑寰呬笅涓骇鍝佽繘绔�
@@ -750,12 +754,12 @@
             List<MES_WIP_PKG> list = new();
             if (parent.Items.Any())
             {
-	            foreach (var item in parent.Items)
-	            {
-	                item.Package.PARENT_SN = parent.Package?.SN;
-	                list.AddRange(GetMinPackageList(item));
-	            }
-            } 
+                foreach (var item in parent.Items)
+                {
+                    item.Package.PARENT_SN = parent.Package?.SN;
+                    list.AddRange(GetMinPackageList(item));
+                }
+            }
             else
             {
                 if (!parent.Package.IsNullOrEmpty())
@@ -803,7 +807,7 @@
                 CurPkg.Item.Package.WEIGHT = CurPkg.WeightInfo.Weight;
                 CurPkg.Item.Package.WEIGHT_UNIT = CurPkg.WeightInfo.Unit;
             }
-            
+
             //涓嶆槸鎵嬪姩缁撴潫鍖呰鍒欎繚瀛樿涓烘搷浣滆褰�
             if (!IsManually)
             {
@@ -866,36 +870,37 @@
                     if (_pkgList.Any())
                     {
                         db.Storageable(_pkgList, CurPosition.UserCode).ExecuteCommand();
-                        foreach (var pkg in _pkgList)
-                        {
-                            //鍖呰淇℃伅淇濆瓨鍒板湪鍒跺搧淇℃伅琛�
-                            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 == NodeAct.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();
                     }
                 };
             }
@@ -903,54 +908,56 @@
             {
                 if (CurPkg.IsFinished)
                 {
-	                var _pkgList = CurPosition.GetPackageList(CurPkg.Item);
-	               
-	                //鏈�澶栧眰鍖呰宸茬粡瀹屾垚鍖呰锛屽垯鎶婂伐搴忎腑鏆傚瓨鏍囪璁句负false锛岀粺涓�鎻愪氦鍖呰鍐呬骇鍝佺殑杩囩珯璁板綍
-	                CurPosition.NeedTemporaryStoreDBCommitAction = false;
-	                //淇濆瓨鏁版嵁
-	                CurPosition.SaveStepsCommitActionToDB(() =>
-	                {
-	                    var db = CurPosition.GetCommitDB();
-	                    if (_pkgList.Any())
-	                    {
-	                        db.Storageable(_pkgList, CurPosition.UserCode).ExecuteCommand();
-	                        foreach (var pkg in _pkgList)
-	                        {
-	                            //鍖呰淇℃伅淇濆瓨鍒板湪鍒跺搧淇℃伅琛�
-	                            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 == NodeAct.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();
-	                        }
-	                    }
-	                });
-	                //濡傛灉褰撳墠鏉$爜宸茬粡瀹屽伐锛屾鏌ュ綋鍓嶅伐鍗曟壒娆″拰宸ュ崟鏄惁瀹屽伐
-	                if (CurPkg.IsReachedEndNode)
-	                {
-	                    CurPosition.WorkBatch.CheckIsComplete(CurPosition.UserCode);
-	                }
+                    var _pkgList = CurPosition.GetPackageList(CurPkg.Item);
+
+                    //鏈�澶栧眰鍖呰宸茬粡瀹屾垚鍖呰锛屽垯鎶婂伐搴忎腑鏆傚瓨鏍囪璁句负false锛岀粺涓�鎻愪氦鍖呰鍐呬骇鍝佺殑杩囩珯璁板綍
+                    CurPosition.NeedTemporaryStoreDBCommitAction = false;
+                    //淇濆瓨鏁版嵁
+                    CurPosition.SaveStepsCommitActionToDB(() =>
+                    {
+                        var db = CurPosition.GetCommitDB();
+                        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 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();
+                        }
+                    });
+                    //濡傛灉褰撳墠鏉$爜宸茬粡瀹屽伐锛屾鏌ュ綋鍓嶅伐鍗曟壒娆″拰宸ュ崟鏄惁瀹屽伐
+                    if (CurPkg.IsReachedEndNode)
+                    {
+                        CurPosition.WorkBatch.CheckIsComplete(CurPosition.UserCode);
+                    }
                 }
             }
 
@@ -974,7 +981,7 @@
             IsFinished = true;
             CurStep?.SetStatusMessage(StepStatus.Finished, Biz.L("鍖呰瀹屾垚"));
             action.Data.ShortMsg = new("鍖呰瀹屾垚", ShortMessage.Types.Success);
-            
+
             return action;
         }
 

--
Gitblit v1.9.3