From 481e4bef4be32a5a9754d01faf80bf0bc4e14951 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期三, 28 八月 2024 14:23:16 +0800
Subject: [PATCH] 生产领料单

---
 MES.Service/service/Warehouse/MesInvItemArnDetailManager.cs |  121 ++++++++++++++++++++++++++++------------
 1 files changed, 84 insertions(+), 37 deletions(-)

diff --git a/MES.Service/service/Warehouse/MesInvItemArnDetailManager.cs b/MES.Service/service/Warehouse/MesInvItemArnDetailManager.cs
index 38d361f..73d3732 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
@@ -21,7 +28,8 @@
                     c.ItemNo == t.ItemNo && c.Company == t.Company &&
                     c.Factory == t.Factory,
                     JoinType.Left,
-                    t.Fpurchaseunitid == u.Id && t.Factory == u.Factory &&
+                    t.Fpurchaseunitid == u.Id.ToString() &&
+                    t.Factory == u.Factory &&
                     t.Company == u.Company
                 })
             .Where((c, t, u) => c.Mid == query.id)
@@ -52,18 +60,20 @@
         // 鏌ヨ
         var result = Db
             .Queryable<MesQaItemsDetect01, MesInvItemArn, MesInvItemArnDetail,
-                MesItems, MesUnit>(
-                (a, d, b, c, t) => new object[]
+                MesItems, MesUnit, MesQaItemsDetectDetail5>(
+                (a, d, b, c, t, z) => new object[]
                 {
                     JoinType.Inner, d.BillNo == a.LotNo,
                     JoinType.Inner, d.Id == b.Mid && b.ItemNo == a.ItemNo,
                     JoinType.Inner,
                     a.ItemNo == c.ItemNo && a.Company == c.Company &&
                     a.Factory == c.Factory,
-                    JoinType.Inner, c.Fpurchaseunitid == t.Id
+                    JoinType.Inner, c.Fpurchaseunitid == t.Id.ToString(),
+                    JoinType.Inner, z.ReleaseNo == a.ReleaseNo
                 })
-            .Where((a, d, b, c, t) => a.FngHandle == "閫�璐�" &&
-                                      query.ItemArnDetailIds.Contains(b.Id))
+            .Where((a, d, b, c, t, z) => a.FngHandle == "閫�璐�" &&
+                                         z.FcheckResu == "涓嶅悎鏍�" &&
+                                         query.ItemArnDetailIds.Contains(b.Id))
             .Select((a, d, b, c, t) => new Material
             {
                 FmrMode = a.Fmrmode,
@@ -81,16 +91,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 +106,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