From 1bcc9f898b1cb745bda50ac3b177de86f7b661bc Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期一, 26 八月 2024 16:51:51 +0800
Subject: [PATCH] 包装行为增加称重按预设范围来判断称重是否成功 增加专门验证用的行为

---
 Tiger.Business.MES/WorkAction/PackingAction.cs |  180 ++++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 134 insertions(+), 46 deletions(-)

diff --git a/Tiger.Business.MES/WorkAction/PackingAction.cs b/Tiger.Business.MES/WorkAction/PackingAction.cs
index 88f623c..7a1566f 100644
--- a/Tiger.Business.MES/WorkAction/PackingAction.cs
+++ b/Tiger.Business.MES/WorkAction/PackingAction.cs
@@ -25,6 +25,7 @@
         public MES_WO_ACTION Setting { get; set; }
         #endregion
         public BAS_PKG_RULE PkgRule { get; set; }
+        public BAS_PKG_PROD PkgProd { get; set; }
         public WipPkg CurPkg { get; set; }
         public WipPkgItem CurPkgItem { get; set; }
         public PackingActionOutput CurCmd { get; set; }
@@ -68,6 +69,8 @@
             LabelPV = Biz.Db.Queryable<BAS_LABEL_PV>().ToList();
             //鑾峰彇鏄惁鍖呰瀹屽悗闇�瑕佺О閲�
             NeedWeighing = Setting.OPTION_2 == "Y";
+            //鑾峰彇鍖呰瑙勫垯鐨勭О閲嶈寖鍥�
+            PkgProd = Biz.Db.Queryable<BAS_PKG_PROD>().Where(q => q.PKG_RULE_ID == PkgRule.ID && q.ITEM_CODE == CurPosition.WorkBatch.WO.ITEM_CODE).First();
             //濡傛灉宸ュ簭涓婁笅鏂囦腑娌℃湁鍖呰璁板綍鍒欐柊寤轰竴涓紝鏈夊垯鑾峰彇褰撳墠鐨勫寘瑁呰褰�
             if (CurPosition.Context.ContainsKey("CurPackage") && !CurPosition.Context["CurPackage"].IsNullOrEmpty())
             {
@@ -274,12 +277,89 @@
                         }
                     }
                     break;
+                // Weighing锛氱О閲嶏紝瀹屾垚鍖呰鍚庡鏁翠釜鍖呰鎴愮О閲�
+                case "Weighing":
+                    if (CurCmd.ExecCode == "Weighing")
+                    {
+                        if (!pInput.WeightInfo.IsNullOrEmpty() && pInput.WeightInfo.Weight > 0)
+                        {
+                            //楠岃瘉閲嶉噺鏁版嵁鏄惁绗﹀悎璁剧疆濂界殑閲嶉噺鑼冨洿
+                            if (!PkgProd.IsNullOrEmpty() && (pInput.WeightInfo.Weight < PkgProd.MIN_WEIGHT || PkgProd.MIN_WEIGHT < pInput.WeightInfo.Weight))
+                            {
+                                action.IsSuccessed = false;
+                                action.Data.Data = CurCmd;
+                                action.Data.ShortMsg = new("閲嶉噺瓒呴檺", ShortMessage.Types.Failed);
+                                //action.LocaleMsg = new($"澶栧寘瑁呴噸閲廩{0}]瓒呭嚭浜у搧[{1}]鍦ㄥ寘瑁呰鍒橻{2}]涓殑棰勮鑼冨洿[{3} - {4}]锛岃澶勭悊鍚庨噸鏂颁笂绉扮О閲�");
+                                action.LocaleMsg = new("MES.WorkAction.PackingAction.PackageOverWeight", pInput.WeightInfo.Weight + pInput.WeightInfo.Unit.IsNullOrEmpty("", " " + pInput.WeightInfo.Unit), CurPosition.WorkBatch.WO.ITEM_CODE, PkgRule.RULE_NAME, PkgProd.MIN_WEIGHT + PkgProd.MIN_UNIT.IsNullOrEmpty("", " " + PkgProd.MIN_UNIT), PkgProd.MAX_WEIGHT + PkgProd.MAX_UNIT.IsNullOrEmpty("", " " + PkgProd.MAX_UNIT));
+                                return action;
+                            }
+
+                            CurCmd = null;
+                            PrintTimes = 0;
+                            CurPkg.WeightInfo.Weight = pInput.WeightInfo.Weight;
+                            CurPkg.WeightInfo.Unit = pInput.WeightInfo.Unit;
+                            NeedWeighing = false;
+
+                            //绉伴噸鎴愬姛锛岀户缁涓�
+                            var dtl = PkgRule.Details.FirstOrDefault(q => q.PKG_LEVEL == FinishLevel + 1);
+                            //鏈�澶栧眰鍖呰宸插鐞嗗畬鎴愬垯鐩存帴缁撴潫琛屼负
+                            if (CurPkg.Item.PKG_LEVEL == FinishLevel)
+                            {
+                                action = End();
+                            }
+                            //鏈�澶栧眰鍖呰鏈墦鍗版壂鎻忓垯缁х画
+                            else
+                            {
+                                //濡傛灉涓虹┖鍒欎笉闇�瑕佹墦鍗�
+                                if (LabelDic[dtl.PKG_LEVEL].IsNullOrEmpty())
+	                            {
+	                                var data = new PackingActionOutput() { PkgInfo = CurPkg };
+	                                data.ExecCode = "Scan";
+	                                data.PkgLevel = dtl.PKG_LEVEL;
+	                                CurCmd = data;
+	                                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]);
+	
+	                                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.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);
+	                            }
+                            }
+                            
+                            
+                        }
+                        else
+                        {
+                            action.IsSuccessed = false;
+                            action.Data.Data = CurCmd;
+                            action.Data.ShortMsg = new("绉伴噸澶辫触", ShortMessage.Types.Failed);
+                            //action.LocaleMsg = new($"澶栧寘瑁呯О閲嶆暟鎹紓甯革紝璇烽噸鏂颁笂绉扮О閲�");
+                            action.LocaleMsg = new("MES.WorkAction.PackingAction.PleaseWeighingAgain");
+                            return action;
+                        }
+                    }
+                    break;
                 // Complete锛氬畬鎴愶紝瀹屾垚鍏ㄩ儴鍖呰鍚庣粨鏉熻涓�
                 case "Complete":
                     if (CurCmd.ExecCode == "Complete")
                     {
                         CurCmd = null;
                         PrintTimes = 0;
+                        //鎵撳嵃鍚庣О閲�
                         if (NeedWeighing)
                         {
                             var data = new PackingActionOutput() { PkgInfo = CurPkg };
@@ -294,28 +374,6 @@
                         else
                         {
                             action = End();
-                        }
-                    }
-                    break;
-                // Complete锛氬畬鎴愶紝瀹屾垚鍏ㄩ儴鍖呰鍚庣粨鏉熻涓�
-                case "Weighing":
-                    if (CurCmd.ExecCode == "Weighing")
-                    {
-                        if (!pInput.WeightInfo.IsNullOrEmpty() && pInput.WeightInfo.Weight > 0)
-                        {
-                            CurCmd = null;
-                            PrintTimes = 0;
-                            CurPkgItem.Package.WEIGHT = pInput.WeightInfo.Weight;
-                            CurPkgItem.Package.WEIGHT_UNIT = pInput.WeightInfo.Unit;
-                            action = End();
-                        }
-                        else
-                        {
-                            action.IsSuccessed = false;
-                            action.Data.ShortMsg = new("绉伴噸澶辫触", ShortMessage.Types.Failed);
-                            //action.LocaleMsg = new($"鍖呰[{CurPkgItem.Package.SN}]绉伴噸鏁版嵁寮傚父锛岃閲嶆柊涓婄О绉伴噸");
-                            action.LocaleMsg = new("MES.WorkAction.PackingAction.PleaseWeighingAgain", CurPkgItem.Package.SN);
-                            return action;
                         }
                     }
                     break;
@@ -500,31 +558,48 @@
                         //娣诲姞鏄庣粏鍚庡垽鏂綋鍓嶅寘瑁呭眰绾х殑鏄庣粏鏁伴噺鏄惁绛変簬鍖呰鏁伴噺锛岃嫢鐩哥瓑鍒欐爣璁板綋鍓嶅寘瑁呭眰绾т负瀹屾垚骞跺皾璇曟墦鍗版爣绛�
                         if (CurPkgItem.Items.Count(q => q.IsFinished) == CurPkgItem.PKG_QTY || CurStep.IsNullOrEmpty())
                         {
-                            //琛屼负璁惧畾鐨凮PTION_1-9鏄寘瑁呬笉鍚屽眰绾х殑鏍囩妯℃澘浠g爜锛屽鏋滀负绌哄垯涓嶉渶瑕佹墦鍗�
-                            if (LabelDic[dtl.PKG_LEVEL].IsNullOrEmpty())
+                            //鎵撳嵃鍓嶇О閲嶏細濡傛灉褰撳墠鐨勫寘瑁呮槑缁嗙殑涓婁竴灞傚寘瑁呭璞℃槸鏈�澶栧眰鍖呰涓旈渶瑕佺О閲嶆椂锛屽厛绉伴噸锛屽悎鏍煎悗鍦ㄥ彂鍗版垨鑰呮壂鎻忔渶澶栧眰鍖呰鏍囩
+                            if (CurPkgItem.PKG_LEVEL == CurPkg.Item.PKG_LEVEL && NeedWeighing)
                             {
                                 var data = new PackingActionOutput() { PkgInfo = CurPkg };
-                                data.ExecCode = "Scan";
-                                data.PkgLevel = dtl.PKG_LEVEL;
+                                data.ExecCode = "Weighing";
+                                data.PkgLevel = CurPkgItem.PKG_LEVEL;
                                 CurCmd = data;
                                 action.Data.Data = data;
-                                //action.LocaleMsg = new($"璇锋壂鎻忕{dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛炬潯鐮�");
-                                action.LocaleMsg = new("MES.WorkAction.PackingAction.PleaseScanLabel", dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME);
-                            }
+                                action.Data.ShortMsg = new("涓婄О绉伴噸", ShortMessage.Types.Success);
+                                //action.LocaleMsg = new($"璇锋妸澶栧寘瑁呬笂绉扮О閲�");
+                                action.LocaleMsg = new("MES.WorkAction.PackingAction.PleaseWeighing");
+                            } 
                             else
                             {
-                                //璁剧疆鎵撳嵃鍙橀噺鍊�
-                                LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL]);
-
-                                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.Data = data;
-                                //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);                
+	                            //濡傛灉涓虹┖鍒欎笉闇�瑕佹墦鍗�
+	                            if (LabelDic[dtl.PKG_LEVEL].IsNullOrEmpty())
+	                            {
+	                                var data = new PackingActionOutput() { PkgInfo = CurPkg };
+	                                data.ExecCode = "Scan";
+	                                data.PkgLevel = dtl.PKG_LEVEL;
+	                                CurCmd = data;
+	                                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]);
+	
+	                                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.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);                
+	                            }
                             }
                         }
                         //褰撳墠鍖呰灞傜骇鐨勬槑缁嗘暟閲忔湭杈惧埌鍖呰鏁伴噺锛屽垯瀹屾垚鏈鎵弿锛岀瓑寰呬笅涓骇鍝佽繘绔�
@@ -560,10 +635,14 @@
 
         private List<MES_WIP_PKG> GetPackageList(WipPkgItem parent)
         {
-            List<MES_WIP_PKG> list = new() { parent.Package };
+            List<MES_WIP_PKG> list = new();
+            if (!parent.Package.IsNullOrEmpty())
+            {
+                list.Add(parent.Package);
+            }
             foreach (var item in parent.Items)
             {
-                item.Package.PARENT_SN = parent.Package.SN;
+                item.Package.PARENT_SN = parent.Package?.SN;
                 list.AddRange(GetPackageList(item));
             }
             return list;
@@ -645,6 +724,12 @@
 	                wipActs.Add(wipAct);
 	            }
             }
+            //璁板綍澶栧寘瑁呯殑绉伴噸鏁版嵁
+            if (CurPkg.IsFinished)
+            {
+                CurPkg.Item.Package.WEIGHT = CurPkg.WeightInfo.Weight;
+                CurPkg.Item.Package.WEIGHT_UNIT = CurPkg.WeightInfo.Unit;
+            }
 
             //鍒涘缓鍙橀噺鍏嬮殕瀵硅薄鐢ㄤ簬浼犲叆DBSubmitAction涓繚瀛樺綋鍓嶉渶瑕佹殏瀛樼殑鏁版嵁鍊�
             var _wipActs = wipActs.Clone();
@@ -659,7 +744,7 @@
                 }
                 if (_pkgList.Any())
                 {
-                    db.Insertable(_pkgList, CurPosition.UserCode).ExecuteCommand();
+                    db.Storageable(_pkgList, CurPosition.UserCode).ExecuteCommand();
                     foreach (var pkg in _pkgList)
                     {
                         //鍖呰淇℃伅淇濆瓨鍒板湪鍒跺搧淇℃伅琛�
@@ -685,6 +770,8 @@
                 CurPosition.NeedTemporaryStoreDBCommitAction = false;
                 //鍒犻櫎宸ュ簭涓婁笅鏂囦腑鐨勫寘瑁呰褰�
                 CurPosition.Context.Remove("CurPackage");
+                //action.LocaleMsg = new($"鏉$爜[{CurPkg.Item.Package?.SN}]鍖呰瀹屾垚");
+                action.LocaleMsg = new("MES.WorkAction.PackingAction.PackingSuccess", CurPkg.Item.Package.SN);
             }
             else
             {
@@ -699,12 +786,13 @@
                 {
                     CurPosition.Context.Add("CurPackage", CurPkg);
                 }
+                //action.LocaleMsg = new($"鏉$爜[{CurPosition.CurSN}]鍖呰瀹屾垚");
+                action.LocaleMsg = new("MES.WorkAction.PackingAction.PackingSuccess", CurPosition.CurSN);
             }
 
             IsFinished = true;
             action.Data.ShortMsg = new("鍖呰瀹屾垚", ShortMessage.Types.Success);
-            action.LocaleMsg = new($"鏉$爜[{CurPkg.Item.Package.SN}]鍖呰瀹屾垚");
-            action.LocaleMsg = new("MES.WorkAction.PackingAction.PackingSuccess", CurPkg.Item.Package.SN);
+            
             return action;
         }
 

--
Gitblit v1.9.3