From 4e814dc13545fde4c5c294865370c165db7eb40e Mon Sep 17 00:00:00 2001
From: hao <1836460075@qq.com>
Date: 星期二, 16 九月 2025 19:19:48 +0800
Subject: [PATCH] 组装拆卸测试2

---
 StandardInterface/MES.Service/service/ZZCXDManager.cs |  190 ++++++++++++++++++++++++++++++++--------------
 1 files changed, 131 insertions(+), 59 deletions(-)

diff --git a/StandardInterface/MES.Service/service/ZZCXDManager.cs b/StandardInterface/MES.Service/service/ZZCXDManager.cs
index ff0136e..ecbfdae 100644
--- a/StandardInterface/MES.Service/service/ZZCXDManager.cs
+++ b/StandardInterface/MES.Service/service/ZZCXDManager.cs
@@ -8,7 +8,7 @@
 
 namespace MES.Service.service
 {
-    public class ZzcxdManager : Repository<Zzcxa>
+    public class ZzcxManager : Repository<ZZCX>
     {
         public bool SaveList(List<ERPZZCXD> list)
         {
@@ -18,51 +18,50 @@
 
         public bool Save(ERPZZCXD data)
         {
-            var head = MapErpToMesHead(data.ERPZZCXA);
-            var details = MapErpDbckbToDbckb(data.ERPZZCXB);
+            var head = MapErpToMesHead(data.Main);
+            var children = MapErpChildren(data.Children, data.Main.erpid);
 
             return UseTransaction(db =>
             {
-                switch (data.ERPZZCXA.type)
+                switch (data.Main.type)
                 {
-                    case "3":
-                        return UpdateData(db, head, details) ? 1 : 0;
+                    case "3": // 鍒犻櫎 / 绂佺敤
+                        return UpdateData(db, head, children) ? 1 : 0;
+
                     case "2":
                     case "4":
-                    case "5":
-                        return SaveOrUpdateData(db, head, details) ? 1 : 0;
+                    case "5": // 鏂板鎴栨洿鏂�
+                        return SaveOrUpdateData(db, head, children) ? 1 : 0;
+
                     default:
-                        throw new NotImplementedException($"type娌℃湁 {data.ERPZZCXA.type} 杩欎釜绫诲瀷");
+                        throw new NotImplementedException($"type 娌℃湁 {data.Main.type} 杩欎釜绫诲瀷");
                 }
             }) > 0;
         }
 
-        private Zzcxa MapErpToMesHead(ERPZZCXA dto)
+        private ZZCX MapErpToMesHead(ERPZZCXMain dto)
         {
-            var entity = new Zzcxa
+            var entity = new ZZCX
             {
-                BillNo = dto.bill_no,          // 鍗曟嵁缂栫爜
-                DjLx = dto.dj_lx,              // 鍗曟嵁绫诲瀷
-                KcZz = dto.kc_zz,              // 搴撳瓨缁勭粐
-                SwLx = dto.sw_lx,              // 浜嬪姟绫诲瀷
-                Time =  dto.time , // 鏃ユ湡
-                Bm = dto.bm,                   // 閮ㄩ棬
-                Cgy = dto.cgy,                 // 浠撶鍛�
-                Kcz = dto.kcz,                 // 搴撳瓨缁�
-                DjZt = dto.dj_zt,              // 鍗曟嵁鐘舵��
-                Memo = dto.memo,               // 澶囨敞
-                Cphzlx = dto.cphzlx,           // 鎴愬搧璐т富绫诲瀷
-                Cphz = dto.cphz,               // 鎴愬搧璐т富
-                Zjhzlx = dto.zjhzlx,           // 瀛愪欢璐т富绫诲瀷
-                Zjhz = dto.zjhz,               // 瀛愪欢璐т富
-                ItemId = string.IsNullOrEmpty(dto.item_id) ? null : Convert.ToDecimal(dto.item_id), // 鐗╂枡缂栫爜id
-                Qty = string.IsNullOrEmpty(dto.qty) ? null : Convert.ToDecimal(dto.qty),            // 鏁伴噺
-                Unit = dto.unit,               // 鍗曚綅
-                DepotId = dto.depot_id,        // 浠撳簱
-                Erpid = dto.erpid              // ERP 涓昏〃id
+                BillNo = dto.bill_no,   // 鍗曟嵁缂栫爜
+                Erpid = dto.erpid ,      // ERP 涓昏〃 ID
+                 DjLx = dto.dj_lx,
+                KcZz = dto.kc_zz,
+                SwLx = dto.sw_lx,
+                // Time = string.IsNullOrEmpty(dto.time) ? (DateTime?)null : DateTime.Parse(dto.time),
+                Time = dto.time,
+                Bm = dto.bm,
+                Cgy = dto.cgy,
+                Kcz = dto.kcz,
+                DjZt = dto.dj_zt,
+                Memo = dto.memo,
+                Cphzlx = dto.cphzlx,
+                Cphz = dto.cphz,
+                Zjhzlx = dto.zjhzlx,
+                Zjhz = dto.zjhz,
             };
 
-            var single = Db.Queryable<Zzcxa>()
+            var single = Db.Queryable<ZZCX>()
                            .Where(it => it.Erpid == entity.Erpid)
                            .First();
             if (single != null)
@@ -71,41 +70,78 @@
             return entity;
         }
 
-        private List<Zzcxb> MapErpDbckbToDbckb(List<ERPZZCXB> list)
+        private List<ZZCXA> MapErpChildren(List<ERPZZCXA> list, string mainErpId)
         {
-            var result = new List<Zzcxb>();
+            var result = new List<ZZCXA>();
 
             foreach (var dto in list)
             {
-                var item = new Zzcxb
+                var item = new ZZCXA
                 {
-                    Erpid = dto.erpid,               // ERP 涓昏〃id
-                    Eid = dto.eid,                   // ERP 鍗曟嵁澶磇d
-                    ItemId = string.IsNullOrEmpty(dto.item_id) ? null : Convert.ToDecimal(dto.item_id), // 鐗╂枡缂栫爜id
-                    Qty = string.IsNullOrEmpty(dto.qty) ? null : Convert.ToDecimal(dto.qty),            // 鏁伴噺
-                    Unit = dto.unit,                 // 鍗曚綅
-                    DepotId = dto.depot_id,          // 浠撳簱
-                    LotNo = dto.lot_no,              // 鎵瑰彿
-                    Memo = dto.memo                  // 澶囨敞
+                    Erpid = dto.erpid,
+                 /*   BillNo = dto.bill_no,
+                    DjLx = dto.dj_lx,
+                    KcZz = dto.kc_zz,
+                    SwLx = dto.sw_lx,
+                   // Time = string.IsNullOrEmpty(dto.time) ? (DateTime?)null : DateTime.Parse(dto.time),
+                    Time = dto.time,
+                    Bm = dto.bm,
+                    Cgy = dto.cgy,
+                    Kcz = dto.kcz,
+                    DjZt = dto.dj_zt,
+                    Memo = dto.memo,
+                    Cphzlx = dto.cphzlx,
+                    Cphz = dto.cphz,
+                    Zjhzlx = dto.zjhzlx,
+                    Zjhz = dto.zjhz,*/
+                    ItemId = dto.item_id,
+                    Qty = string.IsNullOrEmpty(dto.qty) ? (decimal?)null : Convert.ToDecimal(dto.qty),
+                    Unit = dto.unit,
+                    DepotId = dto.depot_id,
+                    YdId = mainErpId
                 };
 
-                var existing = Db.Queryable<Zzcxb>().Where(s => s.Erpid == item.Erpid).Single();
+                var existing = Db.Queryable<ZZCXA>().Where(s => s.Erpid == item.Erpid).Single();
                 if (existing != null) item.Id = existing.Id;
 
                 result.Add(item);
+
+                // 瀛欒〃澶勭悊
+                if (dto.SubItems != null && dto.SubItems.Count > 0)
+                {
+                    foreach (var subDto in dto.SubItems)
+                    {
+                        var subEntity = new ZZCXB
+                        {
+                            Eid = subDto.eid,
+                            ItemId = subDto.item_id,
+                            Qty = string.IsNullOrEmpty(subDto.qty) ? (decimal?)null : Convert.ToDecimal(subDto.qty),
+                            Unit = subDto.unit,
+                            DepotId = subDto.depot_id,
+                            LotNo = subDto.lot_no,
+                            Memo = subDto.memo,
+                            Erpid = mainErpId
+                        };
+
+                        var existingSub = Db.Queryable<ZZCXB>().Where(s => s.Eid == subEntity.Eid).Single();
+                        if (existingSub != null) subEntity.Id = existingSub.Id;
+
+                        item.SubItems ??= new List<ZZCXB>();
+                        item.SubItems.Add(subEntity);
+                    }
+                }
             }
 
             return result;
         }
 
-        private bool SaveOrUpdateData(SqlSugarScope db, Zzcxa head, List<Zzcxb> details)
+        private bool SaveOrUpdateData(SqlSugarScope db, ZZCX head, List<ZZCXA> children)
         {
             if (head.Id != null)
                 base.DeleteById(head.Id);
 
-            db.Deleteable<Zzcxb>()
-              .Where(d => d.Eid == head.Erpid)
-              .ExecuteCommand();
+            db.Deleteable<ZZCXA>().Where(d => d.YdId == head.Erpid).ExecuteCommand();
+            db.Deleteable<ZZCXB>().Where(d => d.Erpid == head.Erpid).ExecuteCommand();
 
             var insertedHead = db.Insertable(head)
                 .IgnoreColumns(true)
@@ -113,23 +149,59 @@
             if (insertedHead <= 0)
                 throw new Exception("涓昏〃鎻掑叆澶辫触锛屾湭杩斿洖ID");
 
-            var success = db.Insertable(details)
-                .PageSize(10)
-                .IgnoreColumnsNull()
-                .ExecuteCommand() > 0;
+            foreach (var child in children)
+            {
+                child.Pid = insertedHead;
+                var childId = db.Insertable(child).IgnoreColumns(true).ExecuteReturnIdentity();
 
-            if (insertedHead >= 0 && success) return true;
-            throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�");
+                if (child.SubItems != null && child.SubItems.Count > 0)
+                {
+                    foreach (var sub in child.SubItems)
+                    {
+                        sub.Pid = childId;
+                        db.Insertable(sub).IgnoreColumns(true).ExecuteCommand();
+                    }
+                }
+            }
+
+            return true;
         }
 
-        private bool UpdateData(SqlSugarScope db, Zzcxa head, List<Zzcxb> details)
+        /* private bool UpdateData(SqlSugarScope db, ZZCX head, List<ZZCXA> children)
+         {
+             // 鍒犻櫎涓昏〃 & 瀛愬瓩琛�
+             var deletedHead = base.DeleteById(head.Id);
+             var deletedChildren = db.Deleteable<ZZCXA>().Where(d => d.YdId == head.Erpid).ExecuteCommand();
+             var deletedGrand = db.Deleteable<ZZCXB>().Where(d => d.Erpid == head.Erpid).ExecuteCommand();
+
+             if (deletedHead && deletedChildren >= 0 && deletedGrand >= 0) return true;
+             throw new NotImplementedException("鍒犻櫎澶辫触");
+         }*/
+
+        private bool UpdateData(SqlSugarScope db, ZZCX head, List<ZZCXA> children)
         {
-            var ids = details.Select(d => d.Id).ToArray();
-            var deletedHead = base.DeleteById(head.Id);
-            var deletedDetails = db.Deleteable<Zzcxb>().In(ids).ExecuteCommand() > 0;
+            // 鍒犻櫎涓昏〃
+            var deletedHead = db.Deleteable<ZZCX>()
+                                .Where(d => d.Erpid == head.Erpid)
+                                .ExecuteCommand();
 
-            if (deletedHead && deletedDetails) return true;
-            throw new NotImplementedException("鏇存柊澶辫触");
+            // 鍒犻櫎瀛愯〃
+            var deletedChildren = db.Deleteable<ZZCXA>()
+                                    .Where(d => d.YdId == head.Erpid)
+                                    .ExecuteCommand();
+
+            // 鍒犻櫎瀛欒〃
+            var deletedGrand = db.Deleteable<ZZCXB>()
+                                 .Where(d => d.Erpid == head.Erpid)
+                                 .ExecuteCommand();
+
+            // 濡傛灉涓昏〃娌″垹鍒拌褰曪紝涔熻涓哄厑璁革紙鍙兘涔嬪墠灏变笉瀛樺湪锛�
+            if (deletedHead >= 0 && deletedChildren >= 0 && deletedGrand >= 0)
+                return true;
+
+            throw new NotImplementedException("鍒犻櫎澶辫触");
         }
+
+
     }
 }

--
Gitblit v1.9.3