Procházet zdrojové kódy

BOM同步数据代码问题调整。

tangdi před 3 roky
rodič
revize
f33daf50fa

+ 77 - 34
MicroServices/Business/Business.Application/SyncDataManagement/SyncWMSDataAppService.cs

@@ -582,6 +582,7 @@ namespace Business.SyncDataManagement
         {
             var ic_bomList = _mysql_ic_bom.GetListAsync(a => a.tenant_id == 1000 && a.factory_id == 1001).Result;
             var ic_itemList = _mysql_ic_item.GetListAsync(a => a.tenant_id == 1000 && a.factory_id == 1001).Result;
+            var ic_bomchildList = _mysql_ic_bom_child.GetListAsync(a => a.tenant_id == 1000 && a.factory_id == 1001 && (a.bom_number == "1.SD1.D.0056-F" || a.bom_number == "1.ZC1.D.0001" || a.bom_number == "1.BW1.D.0030")).Result;
             List<ProductStructureMaster> wmsBomList = _productStructureMaster.Select(a => a.Domain == "1001" && (a.ParentItem == "1.SD1.D.0056-F" || a.ParentItem == "1.ZC1.D.0001" || a.ParentItem == "1.BW1.D.0030") && a.IsActive);
             List<ic_bom> ItemsAdd = new List<ic_bom>();
             List<ic_bom_child> childItemsAdd = new List<ic_bom_child>();
@@ -590,50 +591,92 @@ namespace Business.SyncDataManagement
                 var ItemMasterDS = wmsBomList.Select(a => a.ParentItem).Distinct().ToList();
                 foreach (var c in ItemMasterDS)
                 {
-                    var item = ic_itemList.Find(a => a.number == c);
+                    var icbom = ic_bomList.Find(x => x.item_number == c && x.tenant_id == 1000 && x.factory_id == 1001);
                     var ItemList = wmsBomList.Where(a => a.ParentItem == c);
-                    long domain = Convert.ToInt64(ItemList.First().Domain);
-                    long factory_id = domain % 1000;
-                    long tenant_id = domain - factory_id;
-                    var bom = new ic_bom(help.NextId())
+                    var item = ic_itemList.Find(a => a.number == c);
+                    if (item == null)
                     {
-                        bom_number = c,
-                        icitem_id = item == null ? help.NextId() : item.Id,
-                        item_name = item == null ? "" : item.name,
-                        item_number = c,
-                        version = ItemList.First().Refs,
-                        factory_id = 1001,
-                        tenant_id = 1000,
-                        IsDeleted = false,
-                        use_status = 1
-                    };
-                    ItemsAdd.Add(bom);
-
-                    foreach (var child in ItemList)
+                        continue;
+                    }
+                    if (icbom == null)
                     {
-                        var itemchild = ic_itemList.Find(a => a.number == child.ComponentItem);
-                        var bomchild = new ic_bom_child(help.NextId())
+                        long domain = Convert.ToInt64(ItemList.First().Domain);
+                        long factory_id = domain % 1000;
+                        long tenant_id = domain - factory_id;
+                        var bom = new ic_bom(help.NextId())
                         {
-                            bom_id = bom.Id,
-                            bom_number = bom.bom_number,
-                            icitem_id = itemchild == null ? long.MinValue : itemchild.Id,
-                            item_number = child.ComponentItem,
-                            item_name = itemchild == null ? "" : item.name,
-                            unit = child.UM,
-                            qty = child.Qty,
-                            entryid = child.SequenceNum,
-                            erp_cls = itemchild == null ? 2 : itemchild.erp_cls,
-                            begin_day = child.StartEff,
-                            end_day = child.EndEff,
-                            child_num = child.SequenceNum,
-                            version = child.Refs,
+                            bom_number = c,
+                            icitem_id = item.Id,
+                            item_name = item.name,
+                            item_number = c,
+                            version = ItemList.First().Refs,
                             factory_id = 1001,
                             tenant_id = 1000,
                             IsDeleted = false,
                             use_status = 1
                         };
-                        childItemsAdd.Add(bomchild);
+                        ItemsAdd.Add(bom);
+                        foreach (var child in ItemList)
+                        {
+                            var itemchild = ic_itemList.Find(a => a.number == child.ComponentItem);
+                            if (itemchild == null) { continue; }
+                            var bomchild = new ic_bom_child(help.NextId())
+                            {
+                                bom_id = bom.Id,
+                                bom_number = bom.bom_number,
+                                icitem_id = itemchild == null ? long.MinValue : itemchild.Id,
+                                item_number = child.ComponentItem,
+                                item_name = itemchild == null ? "" : itemchild.name,
+                                unit = child.UM,
+                                qty = child.Qty,
+                                entryid = child.SequenceNum,
+                                erp_cls = itemchild == null ? 2 : itemchild.erp_cls,
+                                begin_day = child.StartEff,
+                                end_day = child.EndEff,
+                                child_num = child.SequenceNum,
+                                version = child.Refs,
+                                factory_id = 1001,
+                                tenant_id = 1000,
+                                IsDeleted = false,
+                                use_status = 1
+                            };
+                            childItemsAdd.Add(bomchild);
+                        }
                     }
+                    else {
+                        foreach (var child in ItemList)
+                        {
+                            var itemchild = ic_itemList.Find(a => a.number == child.ComponentItem);
+                            if (itemchild == null) { continue; }
+                            var icbomchild = ic_bomchildList.Find(s => s.bom_number == c && s.item_number == child.ComponentItem);
+                            if (icbomchild == null)
+                            {
+                                var bomchild = new ic_bom_child(help.NextId())
+                                {
+                                    bom_id = icbom.Id,
+                                    bom_number = icbom.bom_number,
+                                    icitem_id = itemchild == null ? long.MinValue : itemchild.Id,
+                                    item_number = child.ComponentItem,
+                                    item_name = itemchild == null ? "" : itemchild.name,
+                                    unit = child.UM,
+                                    qty = child.Qty,
+                                    entryid = child.SequenceNum,
+                                    erp_cls = itemchild == null ? 2 : itemchild.erp_cls,
+                                    begin_day = child.StartEff,
+                                    end_day = child.EndEff,
+                                    child_num = child.SequenceNum,
+                                    version = child.Refs,
+                                    factory_id = 1001,
+                                    tenant_id = 1000,
+                                    IsDeleted = false,
+                                    use_status = 1
+                                };
+                                childItemsAdd.Add(bomchild);
+                            }
+                        }
+                    }
+
+                    
                 }
                 _businessDbContext.BulkInsert(ItemsAdd);
                 _businessDbContext.BulkInsert(childItemsAdd);