From 67238bdfbeb1f06b9870133c9b9e86c45013fad2 Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期五, 11 十月 2024 00:36:52 +0800
Subject: [PATCH] 一些已知更改

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

diff --git a/Tiger.Business.MES/WorkAction/PackingAction.cs b/Tiger.Business.MES/WorkAction/PackingAction.cs
index 516ce14..a8fbe4d 100644
--- a/Tiger.Business.MES/WorkAction/PackingAction.cs
+++ b/Tiger.Business.MES/WorkAction/PackingAction.cs
@@ -1,4 +1,5 @@
-锘縰sing Rhea.Common;
+锘縰sing Microsoft.CodeAnalysis.Differencing;
+using Rhea.Common;
 using SqlSugar;
 using System;
 using System.Collections.Generic;
@@ -31,6 +32,7 @@
         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();
         #endregion Propertys & Variables
 
         #region Functions
@@ -208,7 +210,7 @@
             else
             {
                 //璁剧疆鎵撳嵃鍙橀噺鍊�
-                LabelDic[min.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[min.PKG_LEVEL]);
+                LabelDic[min.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[min.PKG_LEVEL], this);
 
                 var data = new PackingActionOutput() { PkgInfo = CurPkg };
                 data.ExecCode = "Print";
@@ -269,11 +271,11 @@
                         CurCmd = null;
                         PrintTimes = 0;
                         action = SavePkgData(input, action);
-                        if (action.IsSuccessed)
-                        {
-                            CurStep?.SetStatusMessage(StepStatus.Success, Biz.L("鎵弿鎴愬姛"));
-                            action.Data.ShortMsg = new("鎵弿鎴愬姛", ShortMessage.Types.Success);
-                        }
+                        //if (action.IsSuccessed)
+                        //{
+                        //    CurStep?.SetStatusMessage(StepStatus.Success, Biz.L("鎵弿鎴愬姛"));
+                        //    action.Data.ShortMsg = new("鎵弿鎴愬姛", ShortMessage.Types.Success);
+                        //}
                     }
                     break;
                 //Print锛氭墦鍗帮紝鎵撳嵃褰撳墠鍖呰灞傜骇鐨勬爣绛�
@@ -330,7 +332,7 @@
                         if (!pInput.WeightInfo.IsNullOrEmpty() && pInput.WeightInfo.Weight > 0)
                         {
                             //楠岃瘉閲嶉噺鏁版嵁鏄惁绗﹀悎璁剧疆濂界殑閲嶉噺鑼冨洿
-                            if (!PkgProd.IsNullOrEmpty() && (pInput.WeightInfo.Weight < PkgProd.MIN_WEIGHT || PkgProd.MAX_WEIGHT < pInput.WeightInfo.Weight))
+                            if (!PkgProd.IsNullOrEmpty() && ((pInput.WeightInfo.Weight < PkgProd.MIN_WEIGHT && !IsManually) || PkgProd.MAX_WEIGHT < pInput.WeightInfo.Weight))
                             {
                                 action.IsSuccessed = false;
                                 CurStep?.SetStatusMessage(StepStatus.Error, Biz.L("閲嶉噺瓒呴檺"));
@@ -373,7 +375,7 @@
 	                            else
 	                            {
 	                                //璁剧疆鎵撳嵃鍙橀噺鍊�
-	                                LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL]);
+	                                LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL], this);
 	
 	                                var data = new PackingActionOutput() { PkgInfo = CurPkg };
 	                                data.ExecCode = "Print";
@@ -442,8 +444,20 @@
 
                         //鎵嬪姩缁撴潫鍖呰榛樿浠庣浜屽眰鍖呰寮�濮嬮獙璇�
                         var dtl = PkgRule.Details.First(q => q.PKG_LEVEL == 2);
-                        //琛屼负璁惧畾鐨凮PTION_1-9鏄寘瑁呬笉鍚屽眰绾х殑鏍囩妯℃澘浠g爜锛屽鏋滀负绌哄垯涓嶉渶瑕佹墦鍗�
-                        if (LabelDic[dtl.PKG_LEVEL].IsNullOrEmpty())
+                        if (dtl.PKG_LEVEL == CurPkg.Item.PKG_LEVEL && CurPkg.NeedWeighing)
+                        {
+                            var data = new PackingActionOutput() { PkgInfo = CurPkg };
+                            data.ExecCode = "Weighing";
+                            data.PkgLevel = dtl.PKG_LEVEL;
+                            CurCmd = data;
+                            CurStep?.SetStatusMessage(StepStatus.Normal, Biz.L("涓婄О绉伴噸"));
+                            action.Data.Data = data;
+                            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";
@@ -458,7 +472,7 @@
                         else
                         {
                             //璁剧疆鎵撳嵃鍙橀噺鍊�
-                            LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL]);
+                            LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL], this);
 
                             var data = new PackingActionOutput() { PkgInfo = CurPkg };
                             data.ExecCode = "Print";
@@ -541,6 +555,7 @@
                     //鏈�澶栧眰鍖呰宸茬粡瀹屾垚鍖呰锛屼繚瀛樺寘瑁呮暟鎹埌鏁版嵁搴�
                     else
                     {
+                        CurPkg.Item = CurPkgItem;
                         action = CompletePkg();
                     }
                 }
@@ -551,7 +566,27 @@
                     if (pInput.PkgLevel == dtl.PKG_LEVEL)
                     {
                         CurPkgItem.IsFinished = true;
-                        CurPkgItem.Package = new()
+                        CurPkgItem.Package = IsManually ? new()
+                        {
+                            AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG,
+                            AUTH_PROD = CurPosition.CurLine.LINE_CODE,
+                            SN = pInput.PkgSN,
+                            PKG_TYPE = dtl.PkgType.PKG_NAME,
+                            ITEM_CODE = CurPkgItem.Items.First().Package.ITEM_CODE,
+                            QTY = CurPkgItem.Items.Sum(q => q.Package.QTY),
+                            UNIT = dtl.PkgType.PKG_NAME,
+                            WORK_ORDER = CurPkgItem.Items.First().Package.WORK_ORDER,
+                            BATCH_NO = CurPkgItem.Items.First().Package.BATCH_NO,
+                            ROT_CODE = CurPkgItem.Items.First().Package.ROT_CODE,
+                            NODE_ID = CurPkgItem.Items.First().Package.NODE_ID,
+                            NODE_NAME = CurPkgItem.Items.First().Package.NODE_NAME,
+                            FTY_CODE = CurPkgItem.Items.First().Package.FTY_CODE,
+                            WS_CODE = CurPkgItem.Items.First().Package.WS_CODE,
+                            LINE_CODE = CurPkgItem.Items.First().Package.LINE_CODE,
+                            POST_CODE = CurPkgItem.Items.First().Package.POST_CODE,
+                            OPER_CODE = CurPkgItem.Items.First().Package.OPER_CODE,
+                            SEGMENT = CurPkgItem.Items.First().Package.SEGMENT,
+                        } : new()
                         {
                             AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG,
                             AUTH_PROD = CurPosition.CurLine.LINE_CODE,
@@ -617,7 +652,7 @@
                         CurPkgItem = curItem;
 
                         //娣诲姞鏄庣粏鍚庡垽鏂綋鍓嶅寘瑁呭眰绾х殑鏄庣粏鏁伴噺鏄惁绛変簬鍖呰鏁伴噺锛岃嫢鐩哥瓑鍒欐爣璁板綋鍓嶅寘瑁呭眰绾т负瀹屾垚骞跺皾璇曟墦鍗版爣绛�
-                        if (CurPkgItem.Items.Count(q => q.IsFinished) == CurPkgItem.PKG_QTY || CurStep.IsNullOrEmpty())
+                        if (CurPkgItem.Items.Count(q => q.IsFinished) == CurPkgItem.PKG_QTY || IsManually)
                         {
                             //鎵撳嵃鍓嶇О閲嶏細濡傛灉褰撳墠鐨勫寘瑁呮槑缁嗙殑涓婁竴灞傚寘瑁呭璞℃槸鏈�澶栧眰鍖呰涓旈渶瑕佺О閲嶆椂锛屽厛绉伴噸锛屽悎鏍煎悗鍦ㄥ彂鍗版垨鑰呮壂鎻忔渶澶栧眰鍖呰鏍囩
                             if (CurPkgItem.PKG_LEVEL == CurPkg.Item.PKG_LEVEL && CurPkg.NeedWeighing)
@@ -650,7 +685,7 @@
 	                            else
 	                            {
 	                                //璁剧疆鎵撳嵃鍙橀噺鍊�
-	                                LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL]);
+	                                LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL], this);
 	
 	                                var data = new PackingActionOutput() { PkgInfo = CurPkg };
 	                                data.ExecCode = "Print";
@@ -714,6 +749,27 @@
             return list;
         }
 
+        public List<MES_WIP_PKG> GetMinPackageList(WipPkgItem parent)
+        {
+            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));
+	            }
+            } 
+            else
+            {
+                if (!parent.Package.IsNullOrEmpty())
+                {
+                    list.Add(parent.Package);
+                }
+            }
+            return list;
+        }
+
         public ApiAction<SubmitOutput> CompletePkg()
         {
             var action = new ApiAction<SubmitOutput>(new SubmitOutput());
@@ -729,7 +785,7 @@
             action.LocaleMsg = new("MES.WorkAction.PackingAction.PackageComplete", CurPkg.Item.PKG_LEVEL, CurPkg.Item.PKG_NAME);
 
             //鎵嬪姩缁撴潫鍖呰鍒欐爣璁拌涓哄畬鎴�
-            //if (CurStep.IsNullOrEmpty())
+            //if (IsManually)
             //{
             //    IsFinished = true;
             //}
@@ -753,7 +809,7 @@
             }
             
             //涓嶆槸鎵嬪姩缁撴潫鍖呰鍒欎繚瀛樿涓烘搷浣滆褰�
-            if (!CurStep.IsNullOrEmpty())
+            if (!IsManually)
             {
                 //璁板綍琛屼负鎿嶄綔璁板綍
                 var wipActs = new List<MES_WIP_ACT>();
@@ -793,6 +849,7 @@
                         ACT_TYPE = NodeAct.ACT_TYPE,
                         ACT_SN = wipSn.SN,
                         ACT_RESULT = "Y",
+                        ELAPSED_TIME = CurStep.GetElapsedTime().TotalMilliseconds.ToInt64(),
                         TRACE_INFO = $"浜у搧鏉$爜[{string.Join("锛�", CurPosition.CurSN)}]鍖呰瀹屾垚",
                     };
                     wipActs.Add(wipAct);
@@ -834,10 +891,13 @@
             else
             {
                 var _pkgList = CurPkg.IsFinished ? GetPackageList(CurPkg.Item) : new();
+               
+                //鏈�澶栧眰鍖呰宸茬粡瀹屾垚鍖呰锛屽垯鎶婂伐搴忎腑鏆傚瓨鏍囪璁句负false锛岀粺涓�鎻愪氦鍖呰鍐呬骇鍝佺殑杩囩珯璁板綍
+                CurPosition.NeedTemporaryStoreDBCommitAction = false;
                 //淇濆瓨鏁版嵁
-                var db = Biz.Db;
-                var dbTran = db.UseTran(() =>
+                CurPosition.SaveStepsCommitActionToDB(() =>
                 {
+                    var db = CurPosition.GetCommitDB();
                     if (_pkgList.Any())
                     {
                         db.Storageable(_pkgList, CurPosition.UserCode).ExecuteCommand();
@@ -859,11 +919,6 @@
                         }
                     }
                 });
-                if (!dbTran.IsSuccess)
-                {
-                    //鎶涘嚭寮傚父
-                    throw dbTran.ErrorException;
-                }
             }
 
             if (CurPkg.IsFinished)

--
Gitblit v1.9.3