Просмотр исходного кода

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

heteng 2 лет назад
Родитель
Сommit
4bc190a8c4

+ 65 - 39
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -3470,16 +3470,13 @@ namespace Business.Replenishment
                 }
             }
             List<WorkOrdMaster> workMasters = _workOrdMaster.Select(a => mes_Morders.Select(m=>m.morder_no).ToList().Contains(a.WorkOrd) && a.Domain == input.factory_id.ToString());
-            decimal priority = 1;
             for(int i=0;i<weekPlan.Count;i++)
             {
                 weekPlan[i].ProductionStatus = "已发布";
-                weekPlan[i].Priority = priority;
                 workMasters.ForEach(b =>
                 {
                     if (b.ItemNum == weekPlan[i].ItemNumber && b.WorkOrd == weekPlan[i].ProductionOrder)
                     {
-                        b.Priority = priority;
                         b.Status = "p";
                     }
                 });
@@ -3487,12 +3484,10 @@ namespace Business.Replenishment
                 {
                     c.morder_state = MorderEnum.Initial_state;
                 });
-                priority++;
             }
             _workOrdMaster.Update(workMasters);
             await _businessDbContext.BulkUpdateAsync(mes_Morders);
             await _businessDbContext.BulkUpdateAsync(weekPlan);
-      
             return "OK";
         }
 
@@ -3517,16 +3512,13 @@ namespace Business.Replenishment
                 }
             }
             List<WorkOrdMaster> workMasters = _workOrdMaster.Select(a => mes_Morders.Select(m => m.morder_no).ToList().Contains(a.WorkOrd) && a.Domain == factoryid);
-            decimal priority = 1;
             for (int i = 0; i < weekPlan.Count; i++)
             {
                 weekPlan[i].ProductionStatus = "已发布";
-                weekPlan[i].Priority = priority;
                 workMasters.ForEach(b =>
                 {
                     if (b.ItemNum == weekPlan[i].ItemNumber && b.WorkOrd == weekPlan[i].ProductionOrder)
                     {
-                        b.Priority = priority;
                         b.Status = "p";
                     }
                 });
@@ -3534,7 +3526,6 @@ namespace Business.Replenishment
                 {
                     c.morder_state = MorderEnum.Initial_state;
                 });
-                priority++;
             }
             //发布计划订单产生的工单
             List<mes_morder> planMo = _mysql_mes_morder.GetListAsync(a => idList.Contains(a.Id) && string.IsNullOrEmpty(a.morder_state) && a.factory_id.ToString() == factoryid).Result;
@@ -4578,6 +4569,24 @@ namespace Business.Replenishment
             {
                 //Mes_Morders.ForEach(s => { s.moentry_sys_stime = DateTime.Now.Date.AddDays((double)lookDay + 1); });
                 List<string> monolist = Mes_Morders.Select(c => c.morder_no).ToList();
+                if (string.IsNullOrEmpty(analogCalcVersion))
+                {
+                    var workOrds = _workOrdMaster.Select(a => monolist.Contains(a.WorkOrd) && a.Domain == param.factoryId.ToString() && a.IsActive).OrderBy(c => c.Priority).ToList();
+                    List<mes_morder> PriorityList = new List<mes_morder>();
+                    foreach (var item in workOrds)
+                    {
+                        var mesItem = Mes_Morders.Find(a => a.morder_no == item.WorkOrd);
+                        if (mesItem != null)
+                        {
+                            PriorityList.Add(mesItem);
+                        }
+                    }
+                    if(PriorityList.Any())
+                    {
+                        Mes_Morders = PriorityList;
+                    }
+                }
+                
                 //清理PR的占用。
                 //如果PR没有转PO,则PR没有合并,就删除,有合并,就减少合并后的PR的数量。
                 //var prlist = _mysql_srm_pr_main.GetListAsync(s => monolist.Contains(s.pr_mono)).Result;
@@ -4894,6 +4903,7 @@ namespace Business.Replenishment
             {
                 //如果有计划工单,则需要生成pr po oo
                 List<mo_srm_pr_main> prmainlist = new List<mo_srm_pr_main>();
+                List<srm_pr_main> pr_mainlist = new List<srm_pr_main>();
                 if (_CalcBomViewAppService.SRMPRDtoList.Any())
                 {
                     List<List<mo_srm_pr_main>> prlist = _CalcBomViewAppService.SRMPRDtoList.Where(f => f.srm_Pr_Main != null).Select(s => s.srm_Pr_Main).ToList();
@@ -4934,6 +4944,9 @@ namespace Business.Replenishment
                             }
                         }
                     }
+
+                    pr_mainlist = ObjectMapper.Map<List<mo_srm_pr_main>, List<srm_pr_main>>(prmainlist);
+                    pr_mainlist.ForEach(a => { a.analogcalcversion = analogCalcVersion; });
                 }
                 //暂时屏蔽重新生成工单物料明细
                 List<WorkOrdDetail> mainWorkOrdDetails = new List<WorkOrdDetail>();
@@ -5093,7 +5106,7 @@ namespace Business.Replenishment
                         }
                     }
                     //数据库需要减少的PR集合
-                    CalcPrDel(prDelList, dbPurchaseList, ic_items, DBprmainList.Where(x=>x.state==1).ToList(), updatPrList, deletePrList, prmainlist);//只取新增状态的PR,可以做删除或者修改
+                    CalcPrDel(prDelList, dbPurchaseList, ic_items, DBprmainList.Where(x=>x.state==1).ToList(), updatPrList, deletePrList, pr_mainlist);//只取新增状态的PR,可以做删除或者修改
                     new NLogHelper("AlignmentCalcList").WriteLog("AlignmentCalcList", JsonConvert.SerializeObject(AlignmentCalcList), _currentTenant.Id.ToString());
                 }
 
@@ -5148,10 +5161,8 @@ namespace Business.Replenishment
                             var moentrylist = ObjectMapper.Map<List<mo_mes_moentry>, List<mes_moentry>>(_CalcBomViewAppService.moentriesInsertList);
                             _businessDbContext.BulkInsert(moentrylist);
                         }
-                        if (prmainlist.Any())
+                        if (pr_mainlist.Any())
                         {
-                            var pr_mainlist = ObjectMapper.Map<List<mo_srm_pr_main>, List<srm_pr_main>>(prmainlist);
-                            pr_mainlist.ForEach(a => { a.analogcalcversion = analogCalcVersion;}) ;
                             _businessDbContext.BulkInsert(pr_mainlist);
                         }
                         if (_CalcBomViewAppService.newStockOccList.Any())
@@ -5207,7 +5218,7 @@ namespace Business.Replenishment
             return rtn;
         }
 
-        public void CalcPrDel(List<AlignmentCalcDto> prDelList,List<srm_purchase> purchase,List<ic_item> ic_items, List<srm_pr_main> dbPrlist, List<srm_pr_main> updatPrList, List<srm_pr_main> deletePrList,List<mo_srm_pr_main> prmainlist)
+        public void CalcPrDel(List<AlignmentCalcDto> prDelList,List<srm_purchase> purchase,List<ic_item> ic_items, List<srm_pr_main> dbPrlist, List<srm_pr_main> updatPrList, List<srm_pr_main> deletePrList,List<srm_pr_main> prmainlist)
         {
             prDelList.ForEach(dto => {
                 var itemPurList = purchase.Where(x => x.number == dto.ItemNum).ToList();
@@ -5228,12 +5239,16 @@ namespace Business.Replenishment
                                     moPr.pr_rqty = moPr.pr_aqty;
                                     moPr.pr_sqty = moPr.pr_aqty;
                                     dto.updateQty += qty;
+                                    qty = 0;
+                                    dto.updatePrlist.Add(moPr);
                                     continue;
                                 }
                                 else if (moPr.pr_aqty == qty)//一个PR够减
                                 {
                                     dto.deleteQty += qty;
                                     prmainlist.Remove(moPr);
+                                    qty = 0;
+                                    dto.deletePrlist.Add(moPr);
                                     continue;
                                 }
                                 else
@@ -5241,37 +5256,48 @@ namespace Business.Replenishment
                                     dto.deleteQty += moPr.pr_aqty.GetValueOrDefault();
                                     qty -= moPr.pr_aqty.GetValueOrDefault();
                                     prmainlist.Remove(moPr);
+                                    dto.deletePrlist.Add(moPr);
                                 }
                             }
                         }
-                        //当前物料当前供应商的在途采购申请
-                        var itemSupplierList = dbPrlist.Where(x => x.icitem_id == icitem.Id && x.pr_purchaseid == c.supplier_id).OrderByDescending(f => f.pr_sarrive_date).ToList();
-                        if (itemSupplierList.Any())
+                        if (qty > 0)
                         {
-                            foreach (var itemPr in itemSupplierList)
+                            //当前物料当前供应商的在途采购申请
+                            var itemSupplierList = dbPrlist.Where(x => x.icitem_id == icitem.Id && x.pr_purchaseid == c.supplier_id).OrderByDescending(f => f.pr_sarrive_date).ToList();
+                            if (itemSupplierList.Any())
                             {
-                                if (itemPr.pr_aqty > qty)//一个PR够减
-                                {
-                                    itemPr.pr_aqty = itemPr.pr_aqty - qty;
-                                    itemPr.pr_rqty = itemPr.pr_aqty;
-                                    itemPr.pr_sqty = itemPr.pr_aqty;
-                                    updatPrList.Add(itemPr);
-                                    dto.updatePrlist.Add(itemPr);
-                                    dto.updateQty = qty;
-                                    continue;
-                                }
-                                else if (itemPr.pr_aqty == qty)//一个PR够减
+                                foreach (var itemPr in itemSupplierList)
                                 {
-                                    dto.deleteQty += qty;
-                                    deletePrList.Add(itemPr);
-                                    dto.deletePrlist.Add(itemPr);
-                                    continue;
-                                }
-                                else {
-                                    dto.deleteQty += itemPr.pr_aqty.GetValueOrDefault();
-                                    qty -= itemPr.pr_aqty.GetValueOrDefault();
-                                    deletePrList.Add(itemPr);
-                                    dto.deletePrlist.Add(itemPr);
+                                    if (itemPr.pr_aqty > qty)//一个PR够减
+                                    {
+                                        itemPr.pr_aqty = itemPr.pr_aqty - qty;
+                                        itemPr.pr_rqty = itemPr.pr_aqty;
+                                        itemPr.pr_sqty = itemPr.pr_aqty;
+                                        updatPrList.Add(itemPr);
+                                        dto.updatePrlist.Add(itemPr);
+                                        dto.updateQty = qty;
+                                        qty = 0;
+                                        continue;
+                                    }
+                                    else if (itemPr.pr_aqty == qty)//一个PR够减
+                                    {
+                                        dto.deleteQty += qty;
+                                        deletePrList.Add(itemPr);
+                                        dto.deletePrlist.Add(itemPr);
+                                        qty = 0;
+                                        continue;
+                                    }
+                                    else
+                                    {
+                                        dto.deleteQty += itemPr.pr_aqty.GetValueOrDefault();
+                                        qty -= itemPr.pr_aqty.GetValueOrDefault();
+                                        deletePrList.Add(itemPr);
+                                        dto.deletePrlist.Add(itemPr);
+                                    }
+                                    if (qty == 0)
+                                    {
+                                        continue;
+                                    }
                                 }
                             }
                         }