From 6bcfd2449dc18ad9455c365d18027663decf61e8 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期三, 24 七月 2024 14:58:51 +0800
Subject: [PATCH] 完善仓库验退的逻辑

---
 MES.Service/service/Warehouse/MesInvItemArnDetailManager.cs |  106 +++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 75 insertions(+), 31 deletions(-)

diff --git a/MES.Service/service/Warehouse/MesInvItemArnDetailManager.cs b/MES.Service/service/Warehouse/MesInvItemArnDetailManager.cs
index 38d361f..c827092 100644
--- a/MES.Service/service/Warehouse/MesInvItemArnDetailManager.cs
+++ b/MES.Service/service/Warehouse/MesInvItemArnDetailManager.cs
@@ -7,6 +7,13 @@
 
 public class MesInvItemArnDetailManager : Repository<MesInvItemArnDetail>
 {
+    //var result = db.Ado.GetString($"SELECT f_getseqnextvalue('{sequenceName}') FROM DUAL");
+
+    private readonly PurdhbManager purdhbManager = new();
+    private readonly PurdkaManager purdkaManager = new();
+    private readonly PurdkbManager purdkbManager = new();
+
+    private readonly MesQaItemsDetect01Manager rohInDataManager = new();
     //褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
 
     //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 MesInvItemArnDetailManager.cs
@@ -81,16 +88,9 @@
         return result;
     }
 
-    //var result = db.Ado.GetString($"SELECT f_getseqnextvalue('{sequenceName}') FROM DUAL");
-
-    private readonly PurdhbManager purdhbManager = new();
-    private readonly PurdkaManager purdkaManager = new();
-    private readonly PurdkbManager purdkbManager = new();
-    private readonly MesQaItemsDetect01Manager rohInDataManager = new();
-
     public bool SetMaterial(Material material)
     {
-        return UseTransaction(db =>
+        var b1 = UseTransaction(db =>
         {
             var executeCommand = db.Updateable<MesInvItemArnDetail>()
                 .SetColumns(s => s.CheckRes == "涓嶅悎鏍�")
@@ -103,50 +103,94 @@
             var mesQaItemsDetect01 = db.Queryable<MesQaItemsDetect01>()
                 .Where(a => a.Id == material.FmesEntryId).Single();
 
-            if (mesQaItemsDetect01 == null)
-            {
-                return 0;
-            }
+            if (mesQaItemsDetect01 == null) return 0;
 
             var suppName = db.Queryable<MesSupplier>()
                 .Where(b => b.SuppNo == mesQaItemsDetect01.SuppNo)
                 .Select<string>(b => b.SuppName).First();
 
             var CIdt = db.Ado.GetString(
-                $"SELECT f_getseqnextvalue('mes_inv_item_ins') FROM DUAL");
+                "SELECT f_getseqnextvalue('mes_inv_item_ins') FROM DUAL");
 
             var billNo = db.Ado.GetString(
-                $"SELECT getbillcode1('1000', '1000', 'INV_IN_BACK') FROM DUAL");
+                "SELECT getbillcode1('1000', '1000', 'INV_IN_BACK') FROM DUAL");
 
             // PURDKA
             var purdka = GetPurdka(CIdt, billNo, mesQaItemsDetect01, suppName);
 
-            executeCommand += db.Insertable<Purdka>(purdka).ExecuteCommand();
+            executeCommand += db.Insertable(purdka).ExecuteCommand();
 
-            db.Queryable<Purdhb>()
-                .Where(c => c.Dhb001 == mesQaItemsDetect01.LotNo
-                            && c.Dhb003 == mesQaItemsDetect01.ItemNo)
-                .Select(c => new Purdhb
-                {
-                    Dhb002 = c.Dhb002,
-                    Dhb003 = c.Dhb003,
-                    Dhb006 = c.Dhb006,
-                    Dhb007 = c.Dhb007,
-                    Dhb017 = c.Dhb017,
-                    Dhb018 = c.Dhb018,
-                    Dhb001 = c.Dhb001,
-                    Dhb042 = c.Dhb042
-                }).ToList();
+            executeCommand += InsertPurdkbs(db, mesQaItemsDetect01, billNo);
+
+            executeCommand += db.Updateable<MesQaItemsDetect01>()
+                .SetColumns(c => c.Modify1Flag == 1)
+                .SetColumns(c => c.Modify1By == material.UserName)
+                .SetColumns(c => c.Modify1Date == DateTime.Now)
+                .SetColumns(c => c.FngHandle == "閫�璐�")
+                .Where(c => c.ReleaseNo == mesQaItemsDetect01.ReleaseNo)
+                .ExecuteCommand();
 
             return executeCommand;
-        }) > 3;
+        }) >= 4;
+
+        if (b1 == false) throw new NotImplementedException("鎺ㄩ�佸け璐ワ紝Mes鏂归潰鍑虹幇闂");
+
+        return b1;
+    }
+
+    private int InsertPurdkbs(SqlSugarScope db,
+        MesQaItemsDetect01 mesQaItemsDetect01, string billNo)
+    {
+        var purdhbs = db.Queryable<Purdhb>()
+            .Where(c => c.Dhb001 == mesQaItemsDetect01.LotNo
+                        && c.Dhb003 == mesQaItemsDetect01.ItemNo)
+            .Select(c => new Purdhb
+            {
+                Dhb002 = c.Dhb002,
+                Dhb003 = c.Dhb003,
+                Dhb006 = c.Dhb006,
+                Dhb007 = c.Dhb007,
+                Dhb017 = c.Dhb017,
+                Dhb018 = c.Dhb018,
+                Dhb001 = c.Dhb001,
+                Dhb042 = c.Dhb042
+            }).ToList();
+
+        var list = new List<Purdkb>();
+
+        purdhbs.ForEach(s =>
+        {
+            var id = db.Ado.GetString(
+                "SELECT f_getseqnextvalue('MES_INV_ITEM_IN_C_DETAILS') FROM DUAL");
+
+            var purdkb = new Purdkb();
+            purdkb.Id = Convert.ToDecimal(id);
+            purdkb.Dkb001 = billNo;
+            purdkb.Dkb002 = s.Dhb002;
+            purdkb.Dkb003 = s.Dhb003;
+            purdkb.Dkb006 = s.Dhb006;
+            purdkb.Dkb007 = s.Dhb006;
+            purdkb.Dkb008 = 0;
+            purdkb.Dkb009 = s.Dhb007;
+            purdkb.Dkb010 = s.Dhb017;
+            purdkb.Dkb011 = s.Dhb018;
+            purdkb.Dkb012 = s.Dhb001;
+            purdkb.Dkb013 = s.Dhb002;
+            purdkb.Dkb016 = s.Dhb042;
+
+            list.Add(purdkb);
+        });
+
+        var insertRange = db.Insertable(list).ExecuteCommand();
+
+        return insertRange == purdhbs.Count ? 1 : 0;
     }
 
     private static Purdka GetPurdka(string CIdt, string billNo,
         MesQaItemsDetect01 mesQaItemsDetect01, string suppName)
     {
         var date = DateTime.Now.ToString("yyyy-MM-dd");
-        Purdka purdka = new Purdka();
+        var purdka = new Purdka();
         purdka.Id = Convert.ToDecimal(CIdt);
         purdka.Dka001 = billNo;
         purdka.Dka002 = "閲囪喘閫�璐�";

--
Gitblit v1.9.3