From 9f12ec67045443d165eae2670bfb22e17e4186ad Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期二, 26 十一月 2024 21:54:02 +0800
Subject: [PATCH] 优化了一些已知问题

---
 Tiger.Business.MES/WorkAction/PackingAction.cs |   42 +++++++++++++++++++++++++-----------------
 1 files changed, 25 insertions(+), 17 deletions(-)

diff --git a/Tiger.Business.MES/WorkAction/PackingAction.cs b/Tiger.Business.MES/WorkAction/PackingAction.cs
index 45d96aa..3a12771 100644
--- a/Tiger.Business.MES/WorkAction/PackingAction.cs
+++ b/Tiger.Business.MES/WorkAction/PackingAction.cs
@@ -84,7 +84,7 @@
                         IS_MIN_PKG = max.PkgType.IS_MIN_PKG,
                         PKG_LEVEL = max.PKG_LEVEL,
                         PKG_QTY = max.PKG_QTY,
-                        LABEL_CODE = LabelDic.Count > max.PKG_LEVEL ? LabelDic[max.PKG_LEVEL]?.LABEL_CODE : null,
+                        LABEL_CODE = LabelDic?.GetValueOrDefault(max.PKG_LEVEL, null)?.LABEL_CODE,//LabelDic.Count >= max.PKG_LEVEL ? LabelDic[max.PKG_LEVEL]?.LABEL_CODE : null,
                         SN = CurPosition.GenerateSN(max.SN_RULE, this),
                     }
                 };
@@ -100,7 +100,7 @@
                             IS_MIN_PKG = dtl.PkgType.IS_MIN_PKG,
                             PKG_LEVEL = dtl.PKG_LEVEL,
                             PKG_QTY = dtl.PKG_QTY,
-                            LABEL_CODE = LabelDic.Count > dtl.PKG_LEVEL ? LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE : null,
+                            LABEL_CODE = LabelDic.Count >= dtl.PKG_LEVEL ? LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE : null,
                             SN = CurPosition.GenerateSN(dtl.SN_RULE, this),
                         };
                         if (!child.IsNullOrEmpty())
@@ -377,6 +377,7 @@
                             //鏈�澶栧眰鍖呰宸插鐞嗗畬鎴愬垯鐩存帴缁撴潫琛屼负
                             if (CurPkg.Item.PKG_LEVEL == FinishLevel)
                             {
+                                CurPkg.Item.WipSNs = CurPosition.CurWipSNs.ToDictionary(k => k.ID, v => v.SN);
                                 action = End(input);
                             }
                             //鏈�澶栧眰鍖呰鏈墦鍗版壂鎻忓垯缁х画
@@ -570,7 +571,7 @@
                     CurPkgItem.Package.WIP_ID = CurPosition.CurWipSNs.Count == 1 ? CurPosition.CurWipSNs.First().ID : null;
                     CurPkgItem.Package.PKG_TYPE = dtl.PkgType.PKG_NAME;
                     CurPkgItem.Package.ITEM_CODE = CurPosition.CurWipSNs.First().ITEM_CODE;
-                    CurPkgItem.Package.QTY = CurPosition.CurWipSNs.First().QTY;
+                    CurPkgItem.Package.QTY = CurPosition.CurWipSNs.Sum(q => q.QTY);
                     CurPkgItem.Package.UNIT = dtl.PkgType.PKG_NAME;
                     CurPkgItem.Package.WORK_ORDER = CurPosition.CurWipSNs.First().WORK_ORDER;
                     CurPkgItem.Package.BATCH_NO = CurPosition.CurWipSNs.First().BATCH_NO;
@@ -586,6 +587,9 @@
                     CurPkgItem.Package.ACT_ID = NodeAct.ID;
                     CurPkgItem.Package.ACT_NAME = NodeAct.ACT_NAME;
                     CurPkgItem.Package.FLOW_SN = CurPosition.CurWipSNs.First().FLOW_SN;
+
+                    CurPkgItem.WipSNs = CurPosition.CurWipSNs.ToDictionary(k => k.ID, v => v.SN);
+
                     FinishLevel++;
                     //瀹屾垚鍖呰鐨勫眰绾у皬浜庢渶澶栧眰鍖呰灞傜骇
                     if (FinishLevel < PkgRule.Details.Max(q => q.PKG_LEVEL))
@@ -627,6 +631,8 @@
                             POST_CODE = CurPkgItem.Items.First().Package.POST_CODE,
                             OPER_CODE = CurPkgItem.Items.First().Package.OPER_CODE,
                             SEGMENT = CurPkgItem.Items.First().Package.SEGMENT,
+                            ACT_ID = CurPkgItem.Items.First().Package.ACT_ID,
+                            ACT_NAME = CurPkgItem.Items.First().Package.ACT_NAME,
                         } : new()
                         {
                             AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG,
@@ -878,7 +884,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 = () =>
                 {
@@ -890,7 +897,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;
@@ -899,27 +906,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();
                     }
                 };
@@ -929,6 +936,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锛岀粺涓�鎻愪氦鍖呰鍐呬骇鍝佺殑杩囩珯璁板綍
@@ -940,16 +948,16 @@
                         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(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;
+                            //var wipIDs = _pkgList.Where(q => !q.WIP_ID.IsNullOrEmpty()).Select(q => q.WIP_ID).ToList();
+                            var nodeID = _pkgList.First(q => !q.NODE_ID.IsNullOrEmpty()).NODE_ID;
+                            var actID = _pkgList.First(q => !q.ACT_ID.IsNullOrEmpty()).ACT_ID;
+                            var wo = _pkgList.First(q => !q.WORK_ORDER.IsNullOrEmpty()).WORK_ORDER;
                             //鍖呰淇℃伅淇濆瓨鍒板湪鍒跺搧淇℃伅琛�
                             db.Updateable<MES_WIP_DATA>(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 && wipIDs.Contains(q.ID))
+                                .Where(q => q.WORK_ORDER == wo && _wipIDs.Contains(q.ID))
                                 .ExecuteCommand();
                             //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц繃绋嬭褰�
                             var endOperCode = CurPkg.IsReachedEndNode ? "EndNode" : "NotReachedEndNode";
@@ -957,14 +965,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"))
@@ -985,7 +993,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