Forráskód Böngészése

Merge branch 'dev' of http://123.60.180.165:4647/ZZYDOP/DOPCore into dev

Murphy 2 éve
szülő
commit
be1d5536bc

+ 23 - 10
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -3864,10 +3864,10 @@ namespace Business.Replenishment
         /// <param name="sublist"></param>
         /// <param name="suballlist"></param>
         /// <param name="subdtllist"></param>
-        public void IcItemPretreatment(List<mo_ic_bom> boms, List<mo_ic_bom> bomlist, List<mo_ic_bom_child> bomchildlist, List<mo_ic_item> icitemlist, List<mo_ic_substitute> sublist, List<mo_ic_substitute_group> suballlist, List<mo_ic_substitute_group_detail> subdtllist)
+        public void IcItemPretreatment(bool flag, List<mo_ic_bom> boms, List<mo_ic_bom> bomlist, List<mo_ic_bom_child> bomchildlist, List<mo_ic_item> icitemlist, List<mo_ic_substitute> sublist, List<mo_ic_substitute_group> suballlist, List<mo_ic_substitute_group_detail> subdtllist)
         {
             //获取物料bom,物料bom明细
-            GetIcBomData(boms, bomlist, bomchildlist);
+            GetIcBomData(boms, bomlist, bomchildlist, flag);
 
             //根据明细集合查出所有得替代关系表数据集合
             List<string> codeList = bomchildlist.Select(c => c.substitute_code).Distinct().ToList();
@@ -3892,7 +3892,7 @@ namespace Business.Replenishment
         /// <param name="icBoms"></param>
         /// <param name="bomlist"></param>
         /// <param name="bomchildlist"></param>
-        public void GetIcBomData(List<mo_ic_bom> icBoms, List<mo_ic_bom> bomlist, List<mo_ic_bom_child> bomchildlist)
+        public void GetIcBomData(List<mo_ic_bom> icBoms, List<mo_ic_bom> bomlist, List<mo_ic_bom_child> bomchildlist, bool flag)
         {
             if (icBoms.Count == 0)
             {
@@ -3906,9 +3906,15 @@ namespace Business.Replenishment
                     bomlist.Add(ib);
                 }
             }
-            //获取物料bom明细数据
-            //List<mo_ic_bom_child> childList = _ic_bom_child.GetManyByCondition(p => icBoms.Select(m => m.mysql_id).Contains(p.bom_id) && p.use_status == 1 && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted).Result.ToList();
-            List<mo_ic_bom_child> childList = _ic_bom_child.GetListAsync(p => icBoms.Select(m => m.mysql_id).Contains(p.bom_id) && p.company_id == param.company_id && !p.IsDeleted).Result.ToList();
+            List<long> icBomIds = icBoms.Select(m => m.mysql_id).ToList();
+            int page = 1;
+            page = (int)Math.Ceiling(icBomIds.Count() / (decimal)1500);
+            List<mo_ic_bom_child> childList = new List<mo_ic_bom_child>();
+            for (int i = 0; i < page; i++)
+            {
+                var pageBomsIds = icBomIds.Skip(i * 1500).Take(1500).ToList();
+                childList.AddRange(_ic_bom_child.GetListAsync(p => pageBomsIds.Contains(p.bom_id) && p.company_id == param.company_id && !p.IsDeleted).Result);
+            }
             //没有明细数据,终止
             if (childList.Count == 0)
             {
@@ -3921,12 +3927,14 @@ namespace Business.Replenishment
                     bomchildlist.Add(bchild);
                 }
             }
+            if (flag)
+            { return; }
             //通过物料bom明细数据反查物料bom数据
             var boms = _ic_bom.GetListAsync(p => childList.Select(m => m.icitem_id).ToList().Contains(p.icitem_id) && p.use_status == 1 && p.company_id == param.company_id && !p.IsDeleted).Result.ToList();
             foreach (var chd in childList)
             {
                 var curBoms = boms.Where(p => p.icitem_id == chd.icitem_id).ToList();
-                GetIcBomData(curBoms, bomlist, bomchildlist);
+                GetIcBomData(curBoms, bomlist, bomchildlist, flag);
             }
         }
 
@@ -3936,7 +3944,12 @@ namespace Business.Replenishment
         /// </summary>
         public void AutoCreateBomBill(string companyid, List<mo_ic_bom> ic_Boms = null)
         {
-            ic_Boms ??= _ic_bom.GetListAsync(p => p.company_id.ToString() == companyid  && !p.IsDeleted).Result.ToList();
+            bool flag = false;
+            if (ic_Boms == null)
+            {
+                flag = true;
+                ic_Boms = _ic_bom.GetListAsync(p => p.company_id.ToString() == companyid && !p.IsDeleted).Result.ToList();
+            }
             var pretreatment = _mysql_b_bom_pretreatment.GetListAsync(s => ic_Boms.Select(c => c.mysql_id).ToList().Contains(s.sourceid)).Result;
 
             param.company_id = long.Parse(companyid);
@@ -3950,7 +3963,7 @@ namespace Business.Replenishment
             List<mo_ic_substitute> sublist = new List<mo_ic_substitute>();
             List<mo_ic_substitute_group> suballlist = new List<mo_ic_substitute_group>();
             List<mo_ic_substitute_group_detail> subdtllist = new List<mo_ic_substitute_group_detail>();
-            IcItemPretreatment(ic_Boms, bomlist, bomchildlist, icitemlist, sublist, suballlist, subdtllist);
+            IcItemPretreatment(flag, ic_Boms, bomlist, bomchildlist, icitemlist, sublist, suballlist, subdtllist);
 
             List<b_bom_pretreatment> deleteList = new List<b_bom_pretreatment>();
             List<b_bom_pretreatment> addList = new List<b_bom_pretreatment>();
@@ -3972,7 +3985,7 @@ namespace Business.Replenishment
                 //bom替代关系组装
                 _pretreatmentAppService.BomSubstitute(getBomList, bomlist, bomchildlist, icitemlist, sublist, suballlist, subdtllist);
 
-                GenerateSort(getBomList);
+                //GenerateSort(getBomList);
                 var list = ObjectMapper.Map<List<BomChildExamineDto>, List<b_bom_pretreatment>>(getBomList);
                 list.ForEach(s =>
                 {

+ 11 - 10
MicroServices/Business/Business.Application/ResourceExamineManagement/PretreatmentAppService.cs

@@ -34,7 +34,7 @@ namespace Business.ResourceExamineManagement
             {
                 return returnlist;
             }
-
+            int orderNum = 1;
             var dto = new BomChildExamineDto();
             dto.item_id = bom.icitem_id;
             dto.bom_id = BomId.Value;
@@ -44,7 +44,7 @@ namespace Business.ResourceExamineManagement
             dto.fid= help.NextId();
             dto.qty = 1;
             dto.num = "1";
-            dto.num_order = 1;
+            dto.num_order = orderNum;
             dto.isbom = 1;
             dto.is_replace = 0;
             dto.haveicsubs = 0;
@@ -52,7 +52,8 @@ namespace Business.ResourceExamineManagement
             dto.icitem_ids = "";
             dto.Op = 0;
             int type = 0;
-            GetBomList(bomlist, bomchildlist, icitemlist, dto, returnlist, type);
+            
+            GetBomList(bomlist, bomchildlist, icitemlist, dto, returnlist, type, orderNum);
             return returnlist;
         }
 
@@ -64,7 +65,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="icitemlist"></param>
         /// <param name="dto"></param>
         /// <param name="returnlist"></param>
-        public void GetBomList(List<mo_ic_bom> bomlist, List<mo_ic_bom_child> bomchildlist, List<mo_ic_item> icitemlist, BomChildExamineDto dto, List<BomChildExamineDto> returnlist, int type)
+        public void GetBomList(List<mo_ic_bom> bomlist, List<mo_ic_bom_child> bomchildlist, List<mo_ic_item> icitemlist, BomChildExamineDto dto, List<BomChildExamineDto> returnlist, int type, int orderNum)
         {
             int level = dto.level + 1;//初始化定义level层级
 
@@ -98,8 +99,9 @@ namespace Business.ResourceExamineManagement
             int idx = 1;
             foreach (var c in childlist)
             {
+                orderNum += 1;
                 string childNum = dto.num + "." + idx.ToString();
-                long order_num = long.Parse(dto.num_order.ToString() + (idx.ToString().PadLeft(3, '0')));
+                //long order_num = long.Parse(dto.num_order.ToString() + (idx.ToString().PadLeft(3, '0')));
 
                 var icitem = icitemlist.Where(a => a.mysql_id == c.icitem_id).FirstOrDefault();
                 var childBom = bomlist.Where(a => a.icitem_id == c.icitem_id).FirstOrDefault();
@@ -115,7 +117,7 @@ namespace Business.ResourceExamineManagement
                     cdto.qty = c.qty.Value;
                     cdto.backflush = c.backflush;
                     cdto.num = childNum;
-                    cdto.num_order = order_num;
+                    cdto.num_order = orderNum;
                     cdto.isbom = 1;
                     cdto.is_replace = c.is_replace;
                     cdto.haveicsubs = c.haveicsubs;
@@ -129,7 +131,7 @@ namespace Business.ResourceExamineManagement
                     cdto.clean_leadtime = icitem.clean_leadtime;
                     cdto.PurLT = icitem.PurLT;
                     //递归寻找子级
-                    GetBomList(bomlist, bomchildlist, icitemlist, cdto, returnlist, type);
+                    GetBomList(bomlist, bomchildlist, icitemlist, cdto, returnlist, type, orderNum);
                 }
                 else
                 {
@@ -146,7 +148,7 @@ namespace Business.ResourceExamineManagement
                         childDto.item_name = icitem.name;
                         childDto.item_number = icitem.number;
                         childDto.num = childNum;
-                        childDto.num_order = order_num;
+                        childDto.num_order = orderNum;
                         childDto.model = icitem.model;
                         childDto.unit = c.unit;
                         childDto.erp_cls = icitem.erp_cls.GetValueOrDefault();
@@ -165,7 +167,6 @@ namespace Business.ResourceExamineManagement
                         returnlist.Add(childDto);
                     }
                 }
-                idx++;
             }
 
         }
@@ -291,7 +292,7 @@ namespace Business.ResourceExamineManagement
                 dto.substitute_code = "";
                 dto.icitem_ids = "";
                 dto.PurLT = icitem.PurLT;
-                GetBomList(bomlist, bomchildlist, icitemlist, dto, returnlist, type);
+                GetBomList(bomlist, bomchildlist, icitemlist, dto, returnlist, type, (int)dto.num_order);
             }
             else
             {

+ 35 - 11
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -1792,7 +1792,7 @@ namespace Business.ResourceExamineManagement
         /// <param name="icBoms"></param>
         /// <param name="bomlist"></param>
         /// <param name="bomchildlist"></param>
-        public void GetIcBomData(List<mo_ic_bom> icBoms, List<mo_ic_bom> bomlist, List<mo_ic_bom_child> bomchildlist)
+        public void GetIcBomData(List<mo_ic_bom> icBoms, List<mo_ic_bom> bomlist, List<mo_ic_bom_child> bomchildlist, bool flag)
         {
             if (icBoms.Count == 0)
             {
@@ -1806,14 +1806,22 @@ namespace Business.ResourceExamineManagement
                     bomlist.Add(ib);
                 }
             }
-            //获取物料bom明细数据
-            //List<mo_ic_bom_child> childList = _ic_bom_child.GetManyByCondition(p => icBoms.Select(m => m.mysql_id).Contains(p.bom_id) && p.use_status == 1 && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted).Result.ToList();
-            List<mo_ic_bom_child> childList = _ic_bom_child.GetListAsync(p => icBoms.Select(m => m.mysql_id).Contains(p.bom_id) && p.company_id == param.company_id && !p.IsDeleted).Result.ToList();
+            List<long> icBomIds = icBoms.Select(m => m.mysql_id).ToList();
+            int page = 1;
+            page = (int)Math.Ceiling(icBomIds.Count() / (decimal)1500);
+            List<mo_ic_bom_child> childList = new List<mo_ic_bom_child>();
+            for (int i = 0; i < page; i++)
+            {
+                var pageBomsIds = icBomIds.Skip(i * 1500).Take(1500).ToList();
+                childList.AddRange(_ic_bom_child.GetListAsync(p => pageBomsIds.Contains(p.bom_id) && p.company_id == param.company_id && !p.IsDeleted).Result);
+            }
+            
             //没有明细数据,终止
             if (childList.Count == 0)
             {
                 return;
             }
+            
             foreach (var bchild in childList)
             {
                 if (!bomchildlist.Exists(s => s.mysql_id == bchild.mysql_id))
@@ -1821,12 +1829,23 @@ namespace Business.ResourceExamineManagement
                     bomchildlist.Add(bchild);
                 }
             }
+            if (flag)
+            { return; }
+            page = 1;
+            page = (int)Math.Ceiling(childList.Count() / (decimal)1500);
+            List<mo_ic_bom> boms = new List<mo_ic_bom>();
+            for (int i = 0; i < page; i++)
+            {
+                var pageChild = childList.Skip(i * 1500).Take(1500).ToList();
+                boms.AddRange(_ic_bom.GetListAsync(p => pageChild.Select(m => m.icitem_id).ToList().Contains(p.icitem_id) && p.use_status == 1 && p.company_id == param.company_id && !p.IsDeleted).Result);
+            }
+
             //通过物料bom明细数据反查物料bom数据
-            var boms = _ic_bom.GetListAsync(p => childList.Select(m => m.icitem_id).ToList().Contains(p.icitem_id) && p.use_status == 1 && p.company_id == param.company_id && !p.IsDeleted).Result.ToList();
+            // = _ic_bom.GetListAsync(p => childList.Select(m => m.icitem_id).ToList().Contains(p.icitem_id) && p.use_status == 1 && p.company_id == param.company_id && !p.IsDeleted).Result;
             foreach (var chd in childList)
             {
                 var curBoms = boms.Where(p => p.icitem_id == chd.icitem_id).ToList();
-                GetIcBomData(curBoms, bomlist, bomchildlist);
+                GetIcBomData(curBoms, bomlist, bomchildlist, flag);
             }
         }
         /// <summary>
@@ -3555,10 +3574,10 @@ namespace Business.ResourceExamineManagement
         /// <param name="sublist"></param>
         /// <param name="suballlist"></param>
         /// <param name="subdtllist"></param>
-        public void IcItemPretreatment(List<mo_ic_bom> boms, List<mo_ic_bom> bomlist, List<mo_ic_bom_child> bomchildlist, List<mo_ic_item> icitemlist, List<mo_ic_substitute> sublist, List<mo_ic_substitute_group> suballlist, List<mo_ic_substitute_group_detail> subdtllist)
+        public void IcItemPretreatment(bool flag, List<mo_ic_bom> boms, List<mo_ic_bom> bomlist, List<mo_ic_bom_child> bomchildlist, List<mo_ic_item> icitemlist, List<mo_ic_substitute> sublist, List<mo_ic_substitute_group> suballlist, List<mo_ic_substitute_group_detail> subdtllist)
         {
             //获取物料bom,物料bom明细
-            GetIcBomData(boms, bomlist, bomchildlist);
+            GetIcBomData(boms, bomlist, bomchildlist, flag);
 
             //根据明细集合查出所有得替代关系表数据集合
             List<string> codeList = bomchildlist.Select(c => c.substitute_code).Distinct().ToList();
@@ -3582,7 +3601,12 @@ namespace Business.ResourceExamineManagement
         /// </summary>
         public void AutoCreateBomBill(string companyid,List<mo_ic_bom> ic_Boms = null)
         {
-            ic_Boms ??= _ic_bom.GetListAsync(p => p.company_id.ToString() == companyid && !p.IsDeleted).Result.ToList();
+            bool flag = false;
+            if (ic_Boms == null)
+            {
+                flag = true;
+                ic_Boms = _ic_bom.GetListAsync(p => p.company_id.ToString() == companyid && !p.IsDeleted).Result.ToList();
+            }
             var pretreatment = _mysql_b_bom_pretreatment.GetListAsync(s => ic_Boms.Select(c => c.mysql_id).ToList().Contains(s.sourceid)).Result;
 
             param.company_id = long.Parse(companyid);
@@ -3596,7 +3620,7 @@ namespace Business.ResourceExamineManagement
             List<mo_ic_substitute> sublist = new List<mo_ic_substitute>();
             List<mo_ic_substitute_group> suballlist = new List<mo_ic_substitute_group>();
             List<mo_ic_substitute_group_detail> subdtllist = new List<mo_ic_substitute_group_detail>();
-            IcItemPretreatment(ic_Boms, bomlist, bomchildlist, icitemlist, sublist, suballlist, subdtllist);
+            IcItemPretreatment(flag, ic_Boms, bomlist, bomchildlist, icitemlist, sublist, suballlist, subdtllist);
            
             List<b_bom_pretreatment> deleteList = new List<b_bom_pretreatment>();
             List<b_bom_pretreatment> addList = new List<b_bom_pretreatment>();
@@ -3618,7 +3642,7 @@ namespace Business.ResourceExamineManagement
                 //bom替代关系组装
                 _pretreatmentAppService.BomSubstitute(getBomList, bomlist, bomchildlist, icitemlist, sublist, suballlist, subdtllist);
 
-                GenerateSort(getBomList);
+                //GenerateSort(getBomList);
                 var list = ObjectMapper.Map<List<BomChildExamineDto>, List<b_bom_pretreatment>>(getBomList);
                 list.ForEach(s =>
                 {