tangdi 2 anni fa
parent
commit
7a616d4f73

+ 73 - 57
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -4882,9 +4882,24 @@ namespace Business.Replenishment
                 dtl.need_qty = item.need_number.GetValueOrDefault();
                 dtl.need_qty = item.need_number.GetValueOrDefault();
 
 
                 //获取当前物料bom数据
                 //获取当前物料bom数据
-                var childBom = boms.Where(p => p.bom_number == item.bom_number).FirstOrDefault();
+                //var childBom = boms.Where(p => p.bom_number == item.bom_number).FirstOrDefault();
 
 
-                var itemPrelist = pretreatments.Where(s => s.sourceid == childBom.mysql_id).ToList();
+                //获取当前物料bom数据
+                List<b_bom_pretreatment> itemPrelist = new List<b_bom_pretreatment>();
+                //通过工单ID读取,考虑特殊工单的预处理
+                itemPrelist = pretreatments.Where(s => s.sourceid == item.Id).ToList();
+                if (!itemPrelist.Any())
+                {
+                    var childBom = boms.Where(p => p.bom_number == item.bom_number).FirstOrDefault();
+                    if (childBom != null)
+                    {
+                        itemPrelist = pretreatments.Where(s => s.sourceid == childBom.mysql_id).ToList();
+                    }
+                    else
+                    {
+                        continue;
+                    }
+                }
                 if (!itemPrelist.Any())
                 if (!itemPrelist.Any())
                 {
                 {
                     continue;
                     continue;
@@ -4907,7 +4922,7 @@ namespace Business.Replenishment
                 _CalcBomViewAppService.CalcView(getBomList, bangid, item.need_number.GetValueOrDefault(), item.moentry_sys_stime, sklist, sentry, icitemlist);
                 _CalcBomViewAppService.CalcView(getBomList, bangid, item.need_number.GetValueOrDefault(), item.moentry_sys_stime, sklist, sentry, icitemlist);
 
 
                 //TODO:最晚开始时间
                 //TODO:最晚开始时间
-                var curFacDtl = leadTimeList.FirstOrDefault(p => p.item_id == childBom.icitem_id);
+                //var curFacDtl = leadTimeList.FirstOrDefault(p => p.item_id == childBom.icitem_id);
                 //物料齐套时间
                 //物料齐套时间
                 dtl.kitting_times = getBomList.Where(p => p.is_use && p.kitting_time != null).OrderByDescending(m => m.kitting_time).First().kitting_time.GetValueOrDefault();
                 dtl.kitting_times = getBomList.Where(p => p.is_use && p.kitting_time != null).OrderByDescending(m => m.kitting_time).First().kitting_time.GetValueOrDefault();
                 //替代关系展开list
                 //替代关系展开list
@@ -6032,66 +6047,67 @@ namespace Business.Replenishment
         /// </summary>
         /// </summary>
         public void AutoCreateBomBill(string companyid, List<mo_ic_bom> ic_Boms = null)
         public void AutoCreateBomBill(string companyid, List<mo_ic_bom> ic_Boms = null)
         {
         {
-            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);
-
-            //物料bom
-            List<mo_ic_bom> bomlist = new List<mo_ic_bom>();
-            List<mo_ic_bom_child> bomchildlist = new List<mo_ic_bom_child>();
-            //物料信息
-            List<mo_ic_item> icitemlist = new List<mo_ic_item>();
-            //替代关系
-            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(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>();
-            foreach (var bom in ic_Boms)
+            try
             {
             {
-                /*var pret = pretreatment.Find(s => s.sourceid == bom.mysql_id && s.bom_id == bom.mysql_id);
-                if (pret != null)
+                bool flag = false;
+                if (ic_Boms == null)
                 {
                 {
-                    if (pret.version == bom.version)
+                    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);
+
+                //物料bom
+                List<mo_ic_bom> bomlist = new List<mo_ic_bom>();
+                List<mo_ic_bom_child> bomchildlist = new List<mo_ic_bom_child>();
+                //物料信息
+                List<mo_ic_item> icitemlist = new List<mo_ic_item>();
+                //替代关系
+                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(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>();
+                foreach (var bom in ic_Boms)
+                {
+                    var pret = pretreatment.Where(s => s.sourceid == bom.mysql_id).ToList();
+                    if (pret.Any())
                     {
                     {
-                        //如果存在,且版本相同,则不需要处理
-                        continue;
+                        //版本不同则重新生成
+                        deleteList.AddRange(pret);
                     }
                     }
-                    //版本不同则重新生成
-                    deleteList.Add(pret);
-                }*/
-                deleteList.AddRange(pretreatment);
-                //bom层级组装
-                var getBomList = _pretreatmentAppService.BomPretreatment(bom.mysql_id, bomlist, bomchildlist, icitemlist);
-                //bom替代关系组装
-                _pretreatmentAppService.BomSubstitute(getBomList, bomlist, bomchildlist, icitemlist, sublist, suballlist, subdtllist);
-
-                //GenerateSort(getBomList);
-                var list = ObjectMapper.Map<List<BomChildExamineDto>, List<b_bom_pretreatment>>(getBomList);
-                list.ForEach(s =>
-                {
-                    s.sourceid = bom.mysql_id;
-                    s.company_id = bom.company_id;
-                    s.tenant_id = bom.tenant_id;
-                    s.factory_id = bom.factory_id;
-                });
-                addList.AddRange(list);
-            }
-            if (deleteList.Any())
-            {
-                _businessDbContext.BulkDelete(deleteList);
+                    //bom层级组装
+                    var getBomList = _pretreatmentAppService.BomPretreatment(bom.mysql_id, bomlist, bomchildlist, icitemlist);
+                    //bom替代关系组装
+                    _pretreatmentAppService.BomSubstitute(getBomList, bomlist, bomchildlist, icitemlist, sublist, suballlist, subdtllist);
+
+                    //GenerateSort(getBomList);
+                    var list = ObjectMapper.Map<List<BomChildExamineDto>, List<b_bom_pretreatment>>(getBomList);
+                    list.ForEach(s =>
+                    {
+                        s.sourceid = bom.mysql_id;
+                        s.company_id = bom.company_id;
+                        s.tenant_id = bom.tenant_id;
+                        s.factory_id = bom.factory_id;
+                    });
+                    addList.AddRange(list);
+                }
+                if (deleteList.Any())
+                {
+                    _businessDbContext.BulkDelete(deleteList);
+                }
+                if (addList.Any())
+                {
+                    _businessDbContext.BulkInsert(addList);
+                }
             }
             }
-            if (addList.Any())
+            catch (Exception e)
             {
             {
-                _businessDbContext.BulkInsert(addList);
+                new NLogHelper("ResourceExamineAppService").WriteLog("AutoCreateBomBill", "自动生成BOM预处理清单:" + e.Message, _currentTenant.Id.ToString());
             }
             }
         }
         }