From 72080a2270d06efe6c9d44fbb82e7edf28d14f05 Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期四, 08 八月 2024 11:35:08 +0800
Subject: [PATCH] 包装行为增加已扫条码验证,不允许重复扫描

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

diff --git a/Tiger.Business.MES/WorkAction/PackingAction.cs b/Tiger.Business.MES/WorkAction/PackingAction.cs
index d5b882d..9ba0268 100644
--- a/Tiger.Business.MES/WorkAction/PackingAction.cs
+++ b/Tiger.Business.MES/WorkAction/PackingAction.cs
@@ -194,15 +194,8 @@
                 case "Scan":
                     if (CurCmd.IsNullOrEmpty() || CurCmd.ExecCode == "Scan" || (CurCmd.ExecCode == "Print" && CurCmd.PkgLevel == pInput.PkgLevel))
                     {
-                        //瀹㈡埛绔壂鎻忔垚鍔�
-                        if (pInput.IsFinish)
-                        {
-                            CurCmd = null;
-                            PrintTimes = 0;
-                            action = SavePkgData(input, action);
-                        }
                         //瀹㈡埛绔壂鎻忓け璐�
-                        else
+                        if (!pInput.IsFinish || pInput.PkgSN.IsNullOrEmpty())
                         {
                             var dtl = PkgRule.Details.First(q => q.PKG_LEVEL == pInput.PkgLevel);
                             action.IsSuccessed = false;
@@ -210,6 +203,19 @@
                             action.LocaleMsg = new("MES.WorkAction.PackingAction.ScanFail", dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME);
                             return action;
                         }
+                        //楠岃瘉褰撳墠鍖呰鏉$爜鏄惁宸茬粡琚壂鎻忚繃
+                        if (GetPackageList(CurPkg.Item).Any(q => q.SN == pInput.PkgSN))
+                        {
+                            var dtl = PkgRule.Details.First(q => q.PKG_LEVEL == pInput.PkgLevel);
+                            action.IsSuccessed = false;
+                            //action.LocaleMsg = new($"鏉$爜[{pInput.PkgSN}]鏃犻渶閲嶅鎵弿锛岃鎵弿绗瑊dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛炬潯鐮�");
+                            action.LocaleMsg = new("MES.WorkAction.PackingAction.ScanRepeat", pInput.PkgSN, dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME);
+                            return action;
+                        }
+                        //瀹㈡埛绔壂鎻忔垚鍔�
+                        CurCmd = null;
+                        PrintTimes = 0;
+                        action = SavePkgData(input, action);
                     }
                     break;
                 //Print锛氭墦鍗帮紝鎵撳嵃褰撳墠鍖呰灞傜骇鐨勬爣绛�
@@ -402,7 +408,7 @@
                         //鏈�澶栧眰鍖呰宸茬粡瀹屾垚鍖呰锛屼繚瀛樺寘瑁呮暟鎹埌鏁版嵁搴�
                         else
                         {
-                            action = SaveToDB();
+                            action = CompletePkg();
                         }
                     }
                     //褰撳墠澶勭悊鐨勫寘瑁呭眰绾у凡缁忓鐞嗗畬锛岀户缁線涓婁繚瀛�
@@ -506,22 +512,9 @@
             return list;
         }
 
-        public ApiAction<SubmitOutput> SaveToDB()
+        public ApiAction<SubmitOutput> CompletePkg()
         {
             var action = new ApiAction<SubmitOutput>(new SubmitOutput());
-
-            var pkgList = GetPackageList(CurPkg.Item);
-
-            //淇濆瓨鏁版嵁搴�
-            var db = Biz.Db;
-            var dbTran = db.UseTran(() =>
-            {
-                db.Insertable(pkgList, CurPosition.UserCode).ExecuteCommand();
-            });
-            if (!dbTran.IsSuccess)
-            {
-                throw dbTran.ErrorException;
-            }
 
             var data = new PackingActionOutput() { PkgInfo = CurPkg };
             data.ExecCode = "Complete";
@@ -586,11 +579,34 @@
                 wipActs.Add(wipAct);
             }
 
+            //鍒涘缓鍙橀噺鍏嬮殕瀵硅薄鐢ㄤ簬浼犲叆DBSubmitAction涓繚瀛樺綋鍓嶉渶瑕佹殏瀛樼殑鏁版嵁鍊�
+            var _wipActs = wipActs.Clone();
+            var _pkgList = CurPkg.IsFinished ? GetPackageList(CurPkg.Item) : new();
             //淇濆瓨鏁版嵁
             CurStep.DBSubmitAction = () =>
             {
                 var db = CurPosition.GetCommitDB();
-                db.Storageable(wipActs, CurPosition.UserCode).ExecuteCommand();
+                db.Storageable(_wipActs, CurPosition.UserCode).ExecuteCommand();
+                if (_pkgList.Any())
+                {
+                    db.Insertable(_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.CONTAINER_SN == q.CARTON_SN)
+                            .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN)
+                            .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.SN == pkg.SN)
+                            .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.SN == pkg.SN)
+                            .ExecuteCommand();
+                    }
+                }
             };
 
             if (CurPkg.IsFinished)

--
Gitblit v1.9.3