tangdi 3 anni fa
parent
commit
5dfaa1dfd5

+ 7 - 7
MicroServices/Business/Business.Application/ResourceExamineManagement/CalcBomViewAppService.cs

@@ -1041,19 +1041,16 @@ namespace Business.ResourceExamineManagement
             SRMPRDto sRMPR = new SRMPRDto();
             mo_srm_pr_main srm_Pr = new mo_srm_pr_main();
             var leadTime = iCItemLeadTimes.Find(x => x.item_id == returnlist.item_id);
-            var supplier = supplierList.Where(x => x.icitem_id == returnlist.item_id);//默认取第一个供应商
+            var supplier = supplierList.Where(x => x.icitem_id == returnlist.item_id).ToList();//默认取第一个供应商
             var plan = planList.Find(x => x.icitem_id == returnlist.item_id);
-            if (leadTime == null || supplier == null || plan == null)
+            sRMPR.srm_Pr_Main = new List<mo_srm_pr_main>();
+            if (leadTime == null || !supplier.Any() || plan == null)
             {
-                sRMPR.srm_Pr_Main = null;
                 sRMPR.lastStartTmie = deliveryDate.AddDays(7 * -1);//减去提前期
                 return sRMPR;
                 //throw new NotImplementedException("未找到物料ic_factory_details或ic_item_pur或ic_plan信息!");
             }
 
-            decimal bestLead = decimal.MaxValue;
-            decimal bestPrice=decimal.MaxValue;
-            long bestid = 0;
             supplier.ForEach(x =>
             {
                 //提前期随机数,金额随机数
@@ -1104,7 +1101,10 @@ namespace Business.ResourceExamineManagement
                 srm_Pr.totalLeadTime= totalLeadTime;
                 sRMPR.srm_Pr_Main.Add(srm_Pr);
             });
-            sRMPR.srm_Pr_Main.OrderBy(x=>x.totalLeadTime).ThenBy(x=>x.pr_orderprice).First().isbestoptions= true;
+            if (sRMPR.srm_Pr_Main.Any())
+            {
+                sRMPR.srm_Pr_Main.OrderBy(x => x.totalLeadTime.GetValueOrDefault()).ThenBy(x => x.pr_orderprice.GetValueOrDefault()).First().isbestoptions = true;
+            }
             sRMPR.item_no = returnlist.num;
             sRMPR.orderentry_id = returnlist.sentry_id;
             sRMPR.lastStartTmie = deliveryDate.AddDays((double)sRMPR.srm_Pr_Main.MinBy(x=>x.totalLeadTime).totalLeadTime * -1);//减去提前期

+ 16 - 4
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -505,10 +505,10 @@ namespace Business.ResourceExamineManagement
                 //TODO:最早开始时间默认3天后(后期调整)
                 dtl.earliest_times = DateTime.Now.Date.AddDays(3);
                 dtl.need_qty = item.qty.GetValueOrDefault();
-                dtl.bom_number = item.bom_number;
-
+                
                 //获取当前物料bom数据
                 var childBom = boms.Where(p => p.item_number == item.item_number).FirstOrDefault();
+                dtl.bom_number = childBom.bom_number;
                 //bom层级组装
                 var getBomList = _pretreatmentAppService.BomPretreatment(childBom.mysql_id, bomlist, bomchildlist, icitemlist);
                 //bom替代关系组装
@@ -737,7 +737,13 @@ namespace Business.ResourceExamineManagement
                 return;
             }
             //添加物料bom数据
-            bomlist.AddRange(icBoms);
+            foreach (var ib in icBoms)
+            {
+                if (!bomlist.Exists(s => s.mysql_id == ib.mysql_id))
+                {
+                    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.GetManyByCondition(p => icBoms.Select(m => m.mysql_id).Contains(p.bom_id) && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted).Result.ToList();
@@ -746,7 +752,13 @@ namespace Business.ResourceExamineManagement
             {
                 return;
             }
-            bomchildlist.AddRange(childList);
+            foreach (var bchild in childList)
+            {
+                if (!bomchildlist.Exists(s => s.mysql_id == bchild.mysql_id))
+                {
+                    bomchildlist.Add(bchild);
+                }
+            }
             //通过物料bom明细数据反查物料bom数据
             var boms = _ic_bom.GetManyByCondition(p => childList.Select(m => m.icitem_id).ToList().Contains(p.icitem_id) && p.fse_status == 1 && p.tenant_id == param.tenantId && p.factory_id == param.factoryId && !p.IsDeleted).Result.ToList();
             foreach (var chd in childList)

+ 6 - 0
MicroServices/Business/Bussiness.Model/Bang/b_purchase.cs

@@ -92,5 +92,11 @@ namespace Bussiness.Model.Bang
         /// </summary>
         [Comment("税率")]
         public decimal? pr_rate { get; set; }
+
+        /// <summary>
+        /// 最优解
+        /// </summary>
+        [Comment("最优解")]
+        public bool isbestoptions { get; set; }
     }
 }