Murphy 2 лет назад
Родитель
Сommit
2d1d08f39a

+ 566 - 191
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -491,6 +491,23 @@ namespace Business.Replenishment
                 }
             }
             #endregion
+
+            //var pretreatments = _mysql_b_bom_pretreatment.GetListAsync(s => bomList.Select(c => c.Id).ToList().Contains(s.sourceid)).Result;
+            //List<mo_ic_bom> autoCreates = new List<mo_ic_bom>();
+            //var mobomlist = ObjectMapper.Map<List<ic_bom>, List<mo_ic_bom>>(bomList);
+            //mobomlist.ForEach(p =>
+            //{
+            //    if (!pretreatments.Where(s => s.sourceid == p.mysql_id).Any())
+            //    {
+            //        autoCreates.Add(p);
+            //    }
+            //});
+            //if (autoCreates.Any())
+            //{
+            //    AutoCreateBomBill(input.company_id.ToString(), autoCreates);
+            //    pretreatments = _mysql_b_bom_pretreatment.GetListAsync(s => bomList.Select(c => c.Id).ToList().Contains(s.sourceid)).Result;
+            //}
+
             //年度生产大纲实体
             List<ReplenishmentAnnualProduction> annualProductionOutlines = new List<ReplenishmentAnnualProduction>();
             List<YearDemandManagement> frontYearDemand = new List<YearDemandManagement>();
@@ -616,6 +633,87 @@ namespace Business.Replenishment
                 annualProductionOutline.factory_id = input.factory_id;
                 annualProductionOutline.org_id = input.org_id;
                 annualProductionOutlines.Add(annualProductionOutline);
+
+                //var planBOM = bomList.Find(b => b.item_number == productList[i].SAPItemNumber);
+                //var pretreament = pretreatments.Where(c => c.sourceid == planBOM.Id).ToList();
+                //var returnlist = ObjectMapper.Map<List<b_bom_pretreatment>, List<BomChildExamineDto>>(pretreament);
+                //returnlist = returnlist.OrderBy(s => s.num_order).ToList();
+                //var level1Dto = returnlist[0];
+                //level1Dto.needCount = productList[i].Qty;
+                //CaclMaterialShortage(returnlist);
+                //foreach (var r in returnlist)
+                //{
+                //    if (r.item_number != productList[i].SAPItemNumber && r.erp_cls == 1 && !string.IsNullOrEmpty(r.bom_number))
+                //    {
+                //        if (r.needCount <= 0)
+                //            continue;
+                //        var ic_itemSub = _itemMaster.Select(x => x.ItemNum == r.item_number && x.Domain == input.factory_id.ToString());
+                //        if (ic_itemSub.Count <= 0)
+                //            continue;
+
+                //        mes_morder mes_MorderSub = new mes_morder();
+                //        mes_MorderSub.GenerateNewId(help.NextId());
+                //        mes_MorderSub.morder_type = MorderEnum.JhMorder;
+                //        mes_MorderSub.work_order_type = MorderEnum.CgMorder;
+                //        mes_MorderSub.morder_state = "";
+                //        var nbrlistDto = _serialNumberAppService.GetBillNo(input.factory_id.ToString(), "M5", 1, "", 1);
+                //        if (nbrlistDto.Any())
+                //        {
+                //            mes_MorderSub.morder_no = nbrlistDto[0].NbrResult;
+                //        }
+                //        else
+                //        {
+                //            return "没有正确获取到工单编号,请检查";
+                //        }
+                //        mes_MorderSub.fms_number = "";
+                //        mes_MorderSub.bom_number = r.bom_number;
+                //        mes_MorderSub.fmodel = ic_itemSub[0].Descr1;
+                //        mes_MorderSub.urgent = 1;
+                //        mes_MorderSub.moentry_startup_status = 0;
+                //        mes_MorderSub.tenant_id = input.tenant_id;
+                //        mes_MorderSub.factory_id = input.factory_id;
+                //        mes_MorderSub.company_id = input.company_id;
+                //        mes_MorderSub.org_id = input.org_id;
+                //        mes_MorderSub.product_code = ic_itemSub[0].ItemNum;
+                //        mes_MorderSub.product_name = ic_itemSub[0].Descr;
+                //        mes_MorderSub.morder_date = DateTime.Now.Date.AddDays(1);
+                //        if (ic_itemSub[0].PurLT > 0)
+                //        {
+                //            mes_MorderSub.moentry_sys_stime = Convert.ToDateTime(productList[i].PlanMonth + "-01").AddDays(-ic_itemSub[0].PurLT);
+                //        }
+                //        else
+                //        {
+                //            mes_MorderSub.moentry_sys_stime = Convert.ToDateTime(productList[i].PlanMonth + "-01").AddDays(-1);
+                //        }
+                //        mes_MorderSub.moentry_prd = null;
+                //        mes_MorderSub.moentry_prdname = null;
+                //        mes_MorderSub.moentry_wrkc = null;
+                //        mes_MorderSub.moentry_wrkcname = null;
+                //        mes_MorderSub.picking_qty = 0;
+                //        mes_MorderSub.unit = ic_itemSub[0].UM;
+                //        mes_MorderSub.morder_production_number = r.needCount;
+                //        mes_MorderSub.need_number = r.needCount;
+                //        mes_MorderSub.remaining_number = 0;
+                //        mes_MorderSub.create_time = DateTime.Now;
+                //        //生成工单子表数据
+                //        mes_moentry mes_MoentrySub = new mes_moentry();
+                //        mes_MoentrySub.GenerateNewId(help.NextId());
+                //        mes_MoentrySub.moentry_moid = mes_MorderSub.Id;
+                //        mes_MoentrySub.moentry_mono = mes_MorderSub.morder_no;
+                //        mes_MoentrySub.unit = ic_itemSub[0].UM;
+                //        mes_MoentrySub.morder_production_number = r.needCount;
+                //        mes_MoentrySub.need_number = r.needCount;
+                //        mes_MoentrySub.remaining_number = 0;
+                //        mes_MoentrySub.tenant_id = input.tenant_id;
+                //        mes_MoentrySub.factory_id = input.factory_id;
+                //        mes_MoentrySub.company_id = input.company_id;
+                //        mes_MoentrySub.org_id = input.org_id;
+                //        mes_MoentrySub.create_time = DateTime.Now;
+
+                //        moList.Add(mes_MorderSub);
+                //        moentryList.Add(mes_MoentrySub);
+                //    }
+                //}
             }
             //保存数据
             using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
@@ -626,8 +724,9 @@ namespace Business.Replenishment
                     await _businessDbContext.BulkDeleteAsync(toDelete);
                     await _businessDbContext.BulkInsertAsync(annualProductionOutlines);
                     await CalcLongPeriodItemPR(input);
-                    await CalcROP(input);
-                    await SaveProductionMasterPlan(input, annualProductionOutlines);
+                    //await CalcROP(input);
+                    //await SaveProductionMasterPlan(input, annualProductionOutlines);
+                    //await CalcWeekPlan(input);
                     await unitOfWork.CompleteAsync();
                 }
                 catch (Exception e)
@@ -653,12 +752,6 @@ namespace Business.Replenishment
                 input.year = DateTime.Now.Year;
                 input.month = DateTime.Now.Month;
             }
-            //每年10月份做下一年的销售预测
-            if (DateTime.Now.Month >= 10)
-            {
-                input.year = DateTime.Now.AddYears(1).Year;
-                input.month = DateTime.Now.Month;
-            }
             //计算当前年月的N0,N+1,N+2
             List<string> planMons = GetPlanMonth(4);
             List<ProductionMasterPlan> productionMasters= new List<ProductionMasterPlan>();
@@ -1523,7 +1616,6 @@ namespace Business.Replenishment
             addList?.ForEach(item => { item.GenerateNewId(help.NextId()); });
             await _businessDbContext.BulkInsertAsync(addList);
             await _businessDbContext.BulkUpdateAsync(updateList);
-            await CalcWeekPlan(input);
             return "OK";
         }
         private List<ReplenishmentSubItemDto> CalcMonthPlanSubItem(List<MonthlyShipmentPlan> planList,List<mo_ic_bom> boms, List<b_bom_pretreatment> pretreatments)
@@ -1782,177 +1874,15 @@ namespace Business.Replenishment
             //中间件汇总,比如A成品10、11、12月都需要中间件C,B成品11、12月都需要中间件C,那么中间件C需要每个月汇总平均分到4周
             Dictionary<string, decimal?> subProductItem = new Dictionary<string, decimal?>();
             Dictionary<string, BomChildExamineDto> subProductItemModel = new Dictionary<string, BomChildExamineDto>();
-            //用于判断生产批量,小于排产批量就按照批量生产(应该要判断是否有该年度的工单有的话不生产?待确认)
-            var itemMasterList = _itemMaster.Select(t => shipPlanList.Select(s => s.SAPItemNumber).ToList().Contains(t.ItemNum) && t.Domain==input.factory_id.ToString() &&t.MinOrdSales>0);
-            //单独算生产批量
-            var pcpl = planList.Where(t => itemMasterList.Select(i=>i.ItemNum).ToList().Contains(t.number)).Select(t => t.number).Distinct().ToList();
-            foreach (var itemSeq in pcpl)
-            {
-                var monthPlanItem = monthPlan.Find(x => x.ItemNumber == itemSeq);
-                ReplenishmentROPWeekPlan item = new ReplenishmentROPWeekPlan();
-                decimal? itemQty = 0;
-                int days = 15;
-                for (int k = 0; k < 12; k++)
-                {
-                    var weekTime = GetNextMonday().AddDays(28);//增加四周
-                    weekTime = weekTime.AddDays(7 * k);
-                    string kMonth = $"{weekTime.Year}-{weekTime.Month.ToString("00")}";
-                    //瑞奇国科海王
-                    var monthPlanTotal = planList.Where(a => a.planmonth == kMonth &&a.number==itemSeq).ToList();
-                    if (monthPlanTotal != null && monthPlanTotal.Count > 0)
-                    {
-                        item = monthPlanTotal[0];
-                        //瑞奇补货计划!Y5 + 瑞奇补货计划!Z5 + 国科补货计划!Y5 + 国科补货计划!Z5 + 海王补货计划!Y4 + 海王补货计划!Z4
-                        itemQty += monthPlanTotal.Sum(a => a.montheop1) + monthPlanTotal.Sum(a => a.montheop2);
-                        //每次都是发布12周,每个月4周,不用判断存不存在(退市的可能没有)
-                        if (item.area != "国内" && item.area != "中国")
-                        {
-                            days = 8;
-                        }
-                    }
-                }
-                if (itemQty > 0)
-                {
-                    itemQty = Math.Max(itemMasterList.Find(a => a.ItemNum == itemSeq).MinOrdSales, itemQty.GetValueOrDefault());
-                    var weekTime = GetNextMonday().AddDays(28);//增加四周
-                    string kMonth = $"{weekTime.Year}-{weekTime.Month.ToString("00")}";
-                    var isexist=_mysql_mes_morder.GetListAsync(a => a.product_code == itemSeq && a.moentry_sys_etime.Value.Year == weekTime.Year).Result;
-                    if(isexist.Count==0)
-                    {
-                        var bom = bomList.Find(b => b.item_number == itemSeq);
-                        var ic_item = itemList.Find(b => b.number == itemSeq);
-                        mes_morder mes_Morder = new mes_morder();
-                        mes_Morder.GenerateNewId(help.NextId());
-                        mes_Morder.morder_type = MorderEnum.JhMorder;
-                        mes_Morder.work_order_type = MorderEnum.CgMorder;
-                        mes_Morder.morder_state = "";
-                        mes_Morder.morder_no = Guid.NewGuid().ToString();
-                        mes_Morder.fms_number = ic_item.fms_number;
-                        mes_Morder.bom_number = bom.bom_number;
-                        mes_Morder.fmodel = ic_item.model;
-                        mes_Morder.moentry_startup_status = 0;
-                        mes_Morder.tenant_id = input.tenant_id;
-                        mes_Morder.factory_id = input.factory_id;
-                        mes_Morder.company_id = input.company_id;
-                        mes_Morder.org_id = input.org_id;
-                        mes_Morder.product_code = ic_item.number;
-                        mes_Morder.product_name = ic_item.name;
-                        mes_Morder.morder_date = DateTime.Now.Date.AddDays(1);
-                        mes_Morder.moentry_prd = null;
-                        mes_Morder.moentry_prdname = null;
-                        mes_Morder.moentry_wrkc = null;
-                        mes_Morder.moentry_wrkcname = null;
-                        mes_Morder.picking_qty = 0;
-                        mes_Morder.unit = ic_item.unit;
-                        mes_Morder.morder_production_number = Math.Ceiling(itemQty.GetValueOrDefault() / 4);
-                        mes_Morder.need_number = Math.Ceiling(itemQty.GetValueOrDefault() / 4);
-                        //成品半成品取周一为入库时间开始往前推
-                        mes_Morder.moentry_sys_stime = weekTime.AddDays(-ProductTime(routingOps, ic_item.number, input.factory_id.ToString(), mes_Morder.need_number.GetValueOrDefault()) - days);
-                        mes_Morder.moentry_sys_etime = weekTime.AddDays(-days);
-                        mes_Morder.remaining_number = 0;
-                        mes_Morder.create_time = DateTime.Now;
-                        mes_Morder.bang_id = bang_id;
-                        //生成工单子表数据
-                        mes_moentry mes_Moentry = new mes_moentry();
-                        mes_Moentry.GenerateNewId(help.NextId());
-                        mes_Moentry.moentry_moid = mes_Morder.Id;
-                        mes_Moentry.moentry_mono = mes_Morder.morder_no;
-                        mes_Moentry.unit = ic_item.unit;
-                        mes_Moentry.morder_production_number = Math.Ceiling(itemQty.GetValueOrDefault() / 4); ;
-                        mes_Moentry.need_number = Math.Ceiling(itemQty.GetValueOrDefault() / 4); ;
-                        mes_Moentry.remaining_number = 0;
-                        mes_Moentry.tenant_id = input.tenant_id;
-                        mes_Moentry.factory_id = input.factory_id;
-                        mes_Moentry.company_id = input.company_id;
-                        mes_Moentry.org_id = input.org_id;
-                        mes_Moentry.create_time = DateTime.Now;
-                        mes_Moentry.bang_id = bang_id;
-
-                        ReplenishmentWeekPlan weekItem = new ReplenishmentWeekPlan();
-                        weekItem.Priority = 1;
-                        weekItem.Area = item.area;
-                        weekItem.PlanStartDate = mes_Morder.moentry_sys_stime.GetValueOrDefault();
-                        weekItem.Week = $"WK{GetWeekOfYear(mes_Morder.moentry_sys_stime.Value).ToString("00")}";
-                        weekItem.OrderNO = Guid.NewGuid().ToString();
-                        weekItem.ProductionOrder = mes_Morder.morder_no;
-                        weekItem.SAPOrderNO = "";
-                        weekItem.OrderType = "量产";
-                        weekItem.ProductionBatch = "";
-                        weekItem.ProductionStatus = "";
-                        weekItem.ProdLine = item.ProdLine;
-                        weekItem.ProdRange = item.ProdRange;
-                        weekItem.Line = monthPlanItem?.WorkshopLine;
-                        weekItem.ItemNumber = item.number;
-                        weekItem.Model = item.model;
-                        weekItem.Languages = item.Languages;
-                        weekItem.Qty = mes_Morder.morder_production_number.Value;
-                        weekItem.ItemStatus = "";
-                        weekItem.PlanKittingDate = DateTime.Now;
-                        weekItem.Year = weekTime.Year;
-                        weekItem.Month = weekTime.Month;
-                        weekItem.WeekSeq = WeekOfMonth(weekTime, 1);
-                        weekItem.PlanMonth = kMonth;
-                        weekItem.tenant_id = input.tenant_id;
-                        weekItem.factory_id = input.factory_id;
-                        weekItem.company_id = input.company_id;
-                        weekItem.org_id = input.org_id;
-                        weekItem.create_time = DateTime.Now;
-                        weekItem.DistributionChannel = item.distributionchannel;
-                        weekItem.IsReplenishmentModel = "N";
-                        if (item.area == "国内" || item.area == "中国")
-                        {
-                            weekItem.SterilizationDate = mes_Morder.moentry_sys_etime.Value;
-                            weekItem.InStockDate = mes_Morder.moentry_sys_etime.Value.AddDays(days);
-                        }
-                        else
-                        {
-                            weekItem.SterilizationDate = mes_Morder.moentry_sys_etime.Value;
-                            weekItem.InStockDate = mes_Morder.moentry_sys_etime.Value.AddDays(days);
-                        }
-                        weekItem.AssembleHours = 0;
-                        weekItem.HeatSealHours = 0;
-                        weekItem.PackageHours = 0;
-                        weekItem.TotalHours = 0;
-                        //Q2023/11/15的需求同一周有相同物料的工单不继续生成,不考虑数量的偏差
-                        if (!weekProductPlanList.Any(a => a.ItemNumber == item.number && a.Week == weekItem.Week))
-                        {
-                            weekPlan.Add(weekItem);
-                            moList.Add(mes_Morder);
-                            moentryList.Add(mes_Moentry);
-
-                            var planBOM = boms.Find(b => b.item_number == itemSeq);
-                            var pretreament = pretreatments.Where(c => c.sourceid == planBOM.mysql_id).ToList();
-                            var returnlist = ObjectMapper.Map<List<b_bom_pretreatment>, List<BomChildExamineDto>>(pretreament);
-                            returnlist = returnlist.OrderBy(s => s.num_order).ToList();
-                            var level1Dto = returnlist[0];
-                            level1Dto.needCount = itemQty.GetValueOrDefault();
-                            CaclMaterialShortage(returnlist);
-                            foreach (var r in returnlist)
-                            {
-                                if (r.item_number != itemSeq && r.erp_cls == 1 && !string.IsNullOrEmpty(r.bom_number))
-                                {
-                                    if (subProductItem.ContainsKey(r.item_number))
-                                    {
-                                        subProductItem[r.item_number] += r.needCount;
-                                    }
-                                    else
-                                    {
-                                        subProductItem.Add(r.item_number, r.needCount);
-                                        subProductItemModel.Add(r.item_number, r);
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
+            var ropList = planList.Where(t => shipPlanList.Select(s => s.SAPItemNumber).ToList().Contains(t.number)).Select(t => t.number).Distinct().ToList();
+            var itemMasterList = _itemMaster.Select(t => ropList.Contains(t.ItemNum) && t.Domain == input.factory_id.ToString());
+            Dictionary<string, decimal> minordsalesQty = new Dictionary<string, decimal>();
             for (int k = 0; k < 12; k++)
             {
                 var weekTime = GetNextMonday().AddDays(28);//增加四周
                 weekTime = weekTime.AddDays(7 * k);
                 string kMonth = $"{weekTime.Year}-{weekTime.Month.ToString("00")}";
                 var monthWeekPlan = planList.Where(a => a.planmonth == kMonth).ToList();
-                var ropList = planList.Where(t => shipPlanList.Select(s => s.SAPItemNumber).ToList().Contains(t.number)).Select(t => t.number).Distinct().ToList();
                 foreach (var itemSeq in ropList)
                 {
                     var monthPlanItem = monthPlan.Find(x => x.ItemNumber == itemSeq);
@@ -1969,10 +1899,450 @@ namespace Business.Replenishment
                         {
                             days = 8;
                         }
-                        if (itemQty > 0 && !pcpl.Contains(itemSeq))
+                        var itemMaster = itemMasterList.Find(i => i.ItemNum == itemSeq);
+                        if (itemMaster != null && itemMaster.MinOrdSales > 0)
+                        {
+                            if(minordsalesQty.ContainsKey(itemSeq))
+                            {
+                                //多补了后面就少生产
+                                if (minordsalesQty[itemSeq]>=Math.Ceiling(itemQty.GetValueOrDefault()))
+                                {
+                                    //不用生产直接扣减
+                                    minordsalesQty[itemSeq] -= Math.Ceiling(itemQty.GetValueOrDefault());
+                                }else
+                                {
+                                    var needQty = Math.Ceiling(itemQty.GetValueOrDefault()) - minordsalesQty[itemSeq];
+                                    //小于还是按照生产批量生产
+                                    if (needQty<itemMaster.MinOrdSales)
+                                    {
+                                        minordsalesQty[itemSeq] += (itemMaster.MinOrdSales - needQty);//多生产的数量
+                                        var bom = bomList.Find(b => b.item_number == itemSeq);
+                                        var ic_item = itemList.Find(b => b.number == itemSeq);
+                                        mes_morder mes_Morder = new mes_morder();
+                                        mes_Morder.GenerateNewId(help.NextId());
+                                        mes_Morder.morder_type = MorderEnum.JhMorder;
+                                        mes_Morder.work_order_type = MorderEnum.CgMorder;
+                                        mes_Morder.morder_state = "";
+                                        mes_Morder.morder_no = Guid.NewGuid().ToString();
+                                        mes_Morder.fms_number = ic_item.fms_number;
+                                        mes_Morder.bom_number = bom.bom_number;
+                                        mes_Morder.fmodel = ic_item.model;
+                                        mes_Morder.moentry_startup_status = 0;
+                                        mes_Morder.tenant_id = input.tenant_id;
+                                        mes_Morder.factory_id = input.factory_id;
+                                        mes_Morder.company_id = input.company_id;
+                                        mes_Morder.org_id = input.org_id;
+                                        mes_Morder.product_code = ic_item.number;
+                                        mes_Morder.product_name = ic_item.name;
+                                        mes_Morder.morder_date = DateTime.Now.Date.AddDays(1);
+                                        mes_Morder.moentry_prd = null;
+                                        mes_Morder.moentry_prdname = null;
+                                        mes_Morder.moentry_wrkc = null;
+                                        mes_Morder.moentry_wrkcname = null;
+                                        mes_Morder.picking_qty = 0;
+                                        mes_Morder.unit = ic_item.unit;
+                                        mes_Morder.morder_production_number = Math.Ceiling(itemMaster.MinOrdSales);
+                                        mes_Morder.need_number = Math.Ceiling(itemMaster.MinOrdSales);
+                                        //成品半成品取周一为入库时间开始往前推
+                                        mes_Morder.moentry_sys_stime = weekTime.AddDays(-ProductTime(routingOps, ic_item.number, input.factory_id.ToString(), mes_Morder.need_number.GetValueOrDefault()) - days);
+                                        mes_Morder.moentry_sys_etime = weekTime.AddDays(-days);
+                                        mes_Morder.remaining_number = 0;
+                                        mes_Morder.create_time = DateTime.Now;
+                                        mes_Morder.bang_id = bang_id;
+                                        //生成工单子表数据
+                                        mes_moentry mes_Moentry = new mes_moentry();
+                                        mes_Moentry.GenerateNewId(help.NextId());
+                                        mes_Moentry.moentry_moid = mes_Morder.Id;
+                                        mes_Moentry.moentry_mono = mes_Morder.morder_no;
+                                        mes_Moentry.unit = ic_item.unit;
+                                        mes_Moentry.morder_production_number = Math.Ceiling(itemMaster.MinOrdSales);
+                                        mes_Moentry.need_number = Math.Ceiling(itemMaster.MinOrdSales);
+                                        mes_Moentry.remaining_number = 0;
+                                        mes_Moentry.tenant_id = input.tenant_id;
+                                        mes_Moentry.factory_id = input.factory_id;
+                                        mes_Moentry.company_id = input.company_id;
+                                        mes_Moentry.org_id = input.org_id;
+                                        mes_Moentry.create_time = DateTime.Now;
+                                        mes_Moentry.bang_id = bang_id;
+
+                                        ReplenishmentWeekPlan weekItem = new ReplenishmentWeekPlan();
+                                        weekItem.Priority = 1;
+                                        weekItem.Area = item.area;
+                                        weekItem.PlanStartDate = mes_Morder.moentry_sys_stime.GetValueOrDefault();
+                                        weekItem.Week = $"WK{GetWeekOfYear(mes_Morder.moentry_sys_stime.Value).ToString("00")}";
+                                        weekItem.OrderNO = Guid.NewGuid().ToString();
+                                        weekItem.ProductionOrder = mes_Morder.morder_no;
+                                        weekItem.SAPOrderNO = "";
+                                        weekItem.OrderType = "量产";
+                                        weekItem.ProductionBatch = "";
+                                        weekItem.ProductionStatus = "";
+                                        weekItem.ProdLine = item.ProdLine;
+                                        weekItem.ProdRange = item.ProdRange;
+                                        weekItem.Line = monthPlanItem?.WorkshopLine;
+                                        weekItem.ItemNumber = item.number;
+                                        weekItem.Model = item.model;
+                                        weekItem.Languages = item.Languages;
+                                        weekItem.Qty = mes_Morder.morder_production_number.Value;
+                                        weekItem.ItemStatus = "";
+                                        weekItem.PlanKittingDate = DateTime.Now;
+                                        weekItem.Year = weekTime.Year;
+                                        weekItem.Month = weekTime.Month;
+                                        weekItem.WeekSeq = WeekOfMonth(weekTime, 1);
+                                        weekItem.PlanMonth = kMonth;
+                                        weekItem.tenant_id = input.tenant_id;
+                                        weekItem.factory_id = input.factory_id;
+                                        weekItem.company_id = input.company_id;
+                                        weekItem.org_id = input.org_id;
+                                        weekItem.create_time = DateTime.Now;
+                                        weekItem.DistributionChannel = item.distributionchannel;
+                                        weekItem.IsReplenishmentModel = "N";
+                                        if (item.area == "国内" || item.area == "中国")
+                                        {
+                                            weekItem.SterilizationDate = mes_Morder.moentry_sys_etime.Value;
+                                            weekItem.InStockDate = mes_Morder.moentry_sys_etime.Value.AddDays(days);
+                                        }
+                                        else
+                                        {
+                                            weekItem.SterilizationDate = mes_Morder.moentry_sys_etime.Value;
+                                            weekItem.InStockDate = mes_Morder.moentry_sys_etime.Value.AddDays(days);
+                                        }
+                                        weekItem.AssembleHours = 0;
+                                        weekItem.HeatSealHours = 0;
+                                        weekItem.PackageHours = 0;
+                                        weekItem.TotalHours = 0;
+                                        //Q2023/11/15的需求同一周有相同物料的工单不继续生成,不考虑数量的偏差
+                                        if (!weekProductPlanList.Any(a => a.ItemNumber == item.number && a.Week == weekItem.Week))
+                                        {
+                                            weekPlan.Add(weekItem);
+                                            moList.Add(mes_Morder);
+                                            moentryList.Add(mes_Moentry);
+                                        }
+                                    }
+                                    else
+                                    {
+                                        var bom = bomList.Find(b => b.item_number == itemSeq);
+                                        var ic_item = itemList.Find(b => b.number == itemSeq);
+                                        mes_morder mes_Morder = new mes_morder();
+                                        mes_Morder.GenerateNewId(help.NextId());
+                                        mes_Morder.morder_type = MorderEnum.JhMorder;
+                                        mes_Morder.work_order_type = MorderEnum.CgMorder;
+                                        mes_Morder.morder_state = "";
+                                        mes_Morder.morder_no = Guid.NewGuid().ToString();
+                                        mes_Morder.fms_number = ic_item.fms_number;
+                                        mes_Morder.bom_number = bom.bom_number;
+                                        mes_Morder.fmodel = ic_item.model;
+                                        mes_Morder.moentry_startup_status = 0;
+                                        mes_Morder.tenant_id = input.tenant_id;
+                                        mes_Morder.factory_id = input.factory_id;
+                                        mes_Morder.company_id = input.company_id;
+                                        mes_Morder.org_id = input.org_id;
+                                        mes_Morder.product_code = ic_item.number;
+                                        mes_Morder.product_name = ic_item.name;
+                                        mes_Morder.morder_date = DateTime.Now.Date.AddDays(1);
+                                        mes_Morder.moentry_prd = null;
+                                        mes_Morder.moentry_prdname = null;
+                                        mes_Morder.moentry_wrkc = null;
+                                        mes_Morder.moentry_wrkcname = null;
+                                        mes_Morder.picking_qty = 0;
+                                        mes_Morder.unit = ic_item.unit;
+                                        mes_Morder.morder_production_number = Math.Ceiling(needQty);
+                                        mes_Morder.need_number = Math.Ceiling(needQty);
+                                        //成品半成品取周一为入库时间开始往前推
+                                        mes_Morder.moentry_sys_stime = weekTime.AddDays(-ProductTime(routingOps, ic_item.number, input.factory_id.ToString(), mes_Morder.need_number.GetValueOrDefault()) - days);
+                                        mes_Morder.moentry_sys_etime = weekTime.AddDays(-days);
+                                        mes_Morder.remaining_number = 0;
+                                        mes_Morder.create_time = DateTime.Now;
+                                        mes_Morder.bang_id = bang_id;
+                                        //生成工单子表数据
+                                        mes_moentry mes_Moentry = new mes_moentry();
+                                        mes_Moentry.GenerateNewId(help.NextId());
+                                        mes_Moentry.moentry_moid = mes_Morder.Id;
+                                        mes_Moentry.moentry_mono = mes_Morder.morder_no;
+                                        mes_Moentry.unit = ic_item.unit;
+                                        mes_Moentry.morder_production_number = Math.Ceiling(needQty);
+                                        mes_Moentry.need_number = Math.Ceiling(needQty);
+                                        mes_Moentry.remaining_number = 0;
+                                        mes_Moentry.tenant_id = input.tenant_id;
+                                        mes_Moentry.factory_id = input.factory_id;
+                                        mes_Moentry.company_id = input.company_id;
+                                        mes_Moentry.org_id = input.org_id;
+                                        mes_Moentry.create_time = DateTime.Now;
+                                        mes_Moentry.bang_id = bang_id;
+
+                                        ReplenishmentWeekPlan weekItem = new ReplenishmentWeekPlan();
+                                        weekItem.Priority = 1;
+                                        weekItem.Area = item.area;
+                                        weekItem.PlanStartDate = mes_Morder.moentry_sys_stime.GetValueOrDefault();
+                                        weekItem.Week = $"WK{GetWeekOfYear(mes_Morder.moentry_sys_stime.Value).ToString("00")}";
+                                        weekItem.OrderNO = Guid.NewGuid().ToString();
+                                        weekItem.ProductionOrder = mes_Morder.morder_no;
+                                        weekItem.SAPOrderNO = "";
+                                        weekItem.OrderType = "量产";
+                                        weekItem.ProductionBatch = "";
+                                        weekItem.ProductionStatus = "";
+                                        weekItem.ProdLine = item.ProdLine;
+                                        weekItem.ProdRange = item.ProdRange;
+                                        weekItem.Line = monthPlanItem?.WorkshopLine;
+                                        weekItem.ItemNumber = item.number;
+                                        weekItem.Model = item.model;
+                                        weekItem.Languages = item.Languages;
+                                        weekItem.Qty = mes_Morder.morder_production_number.Value;
+                                        weekItem.ItemStatus = "";
+                                        weekItem.PlanKittingDate = DateTime.Now;
+                                        weekItem.Year = weekTime.Year;
+                                        weekItem.Month = weekTime.Month;
+                                        weekItem.WeekSeq = WeekOfMonth(weekTime, 1);
+                                        weekItem.PlanMonth = kMonth;
+                                        weekItem.tenant_id = input.tenant_id;
+                                        weekItem.factory_id = input.factory_id;
+                                        weekItem.company_id = input.company_id;
+                                        weekItem.org_id = input.org_id;
+                                        weekItem.create_time = DateTime.Now;
+                                        weekItem.DistributionChannel = item.distributionchannel;
+                                        weekItem.IsReplenishmentModel = "N";
+                                        if (item.area == "国内" || item.area == "中国")
+                                        {
+                                            weekItem.SterilizationDate = mes_Morder.moentry_sys_etime.Value;
+                                            weekItem.InStockDate = mes_Morder.moentry_sys_etime.Value.AddDays(days);
+                                        }
+                                        else
+                                        {
+                                            weekItem.SterilizationDate = mes_Morder.moentry_sys_etime.Value;
+                                            weekItem.InStockDate = mes_Morder.moentry_sys_etime.Value.AddDays(days);
+                                        }
+                                        weekItem.AssembleHours = 0;
+                                        weekItem.HeatSealHours = 0;
+                                        weekItem.PackageHours = 0;
+                                        weekItem.TotalHours = 0;
+                                        //Q2023/11/15的需求同一周有相同物料的工单不继续生成,不考虑数量的偏差
+                                        if (!weekProductPlanList.Any(a => a.ItemNumber == item.number && a.Week == weekItem.Week))
+                                        {
+                                            weekPlan.Add(weekItem);
+                                            moList.Add(mes_Morder);
+                                            moentryList.Add(mes_Moentry);
+                                        }
+                                    }
+                                }
+                            }else
+                            {
+                                //小于还是按照生产批量生产
+                                if (Math.Ceiling(itemQty.GetValueOrDefault()) < itemMaster.MinOrdSales)
+                                {
+                                    //多生产的数量
+                                    minordsalesQty.Add(itemSeq, itemMaster.MinOrdSales - Math.Ceiling(itemQty.GetValueOrDefault()));
+                                    var bom = bomList.Find(b => b.item_number == itemSeq);
+                                    var ic_item = itemList.Find(b => b.number == itemSeq);
+                                    mes_morder mes_Morder = new mes_morder();
+                                    mes_Morder.GenerateNewId(help.NextId());
+                                    mes_Morder.morder_type = MorderEnum.JhMorder;
+                                    mes_Morder.work_order_type = MorderEnum.CgMorder;
+                                    mes_Morder.morder_state = "";
+                                    mes_Morder.morder_no = Guid.NewGuid().ToString();
+                                    mes_Morder.fms_number = ic_item.fms_number;
+                                    mes_Morder.bom_number = bom.bom_number;
+                                    mes_Morder.fmodel = ic_item.model;
+                                    mes_Morder.moentry_startup_status = 0;
+                                    mes_Morder.tenant_id = input.tenant_id;
+                                    mes_Morder.factory_id = input.factory_id;
+                                    mes_Morder.company_id = input.company_id;
+                                    mes_Morder.org_id = input.org_id;
+                                    mes_Morder.product_code = ic_item.number;
+                                    mes_Morder.product_name = ic_item.name;
+                                    mes_Morder.morder_date = DateTime.Now.Date.AddDays(1);
+                                    mes_Morder.moentry_prd = null;
+                                    mes_Morder.moentry_prdname = null;
+                                    mes_Morder.moentry_wrkc = null;
+                                    mes_Morder.moentry_wrkcname = null;
+                                    mes_Morder.picking_qty = 0;
+                                    mes_Morder.unit = ic_item.unit;
+                                    mes_Morder.morder_production_number = Math.Ceiling(itemMaster.MinOrdSales);
+                                    mes_Morder.need_number = Math.Ceiling(itemMaster.MinOrdSales);
+                                    //成品半成品取周一为入库时间开始往前推
+                                    mes_Morder.moentry_sys_stime = weekTime.AddDays(-ProductTime(routingOps, ic_item.number, input.factory_id.ToString(), mes_Morder.need_number.GetValueOrDefault()) - days);
+                                    mes_Morder.moentry_sys_etime = weekTime.AddDays(-days);
+                                    mes_Morder.remaining_number = 0;
+                                    mes_Morder.create_time = DateTime.Now;
+                                    mes_Morder.bang_id = bang_id;
+                                    //生成工单子表数据
+                                    mes_moentry mes_Moentry = new mes_moentry();
+                                    mes_Moentry.GenerateNewId(help.NextId());
+                                    mes_Moentry.moentry_moid = mes_Morder.Id;
+                                    mes_Moentry.moentry_mono = mes_Morder.morder_no;
+                                    mes_Moentry.unit = ic_item.unit;
+                                    mes_Moentry.morder_production_number = Math.Ceiling(itemMaster.MinOrdSales);
+                                    mes_Moentry.need_number = Math.Ceiling(itemMaster.MinOrdSales);
+                                    mes_Moentry.remaining_number = 0;
+                                    mes_Moentry.tenant_id = input.tenant_id;
+                                    mes_Moentry.factory_id = input.factory_id;
+                                    mes_Moentry.company_id = input.company_id;
+                                    mes_Moentry.org_id = input.org_id;
+                                    mes_Moentry.create_time = DateTime.Now;
+                                    mes_Moentry.bang_id = bang_id;
+
+                                    ReplenishmentWeekPlan weekItem = new ReplenishmentWeekPlan();
+                                    weekItem.Priority = 1;
+                                    weekItem.Area = item.area;
+                                    weekItem.PlanStartDate = mes_Morder.moentry_sys_stime.GetValueOrDefault();
+                                    weekItem.Week = $"WK{GetWeekOfYear(mes_Morder.moentry_sys_stime.Value).ToString("00")}";
+                                    weekItem.OrderNO = Guid.NewGuid().ToString();
+                                    weekItem.ProductionOrder = mes_Morder.morder_no;
+                                    weekItem.SAPOrderNO = "";
+                                    weekItem.OrderType = "量产";
+                                    weekItem.ProductionBatch = "";
+                                    weekItem.ProductionStatus = "";
+                                    weekItem.ProdLine = item.ProdLine;
+                                    weekItem.ProdRange = item.ProdRange;
+                                    weekItem.Line = monthPlanItem?.WorkshopLine;
+                                    weekItem.ItemNumber = item.number;
+                                    weekItem.Model = item.model;
+                                    weekItem.Languages = item.Languages;
+                                    weekItem.Qty = mes_Morder.morder_production_number.Value;
+                                    weekItem.ItemStatus = "";
+                                    weekItem.PlanKittingDate = DateTime.Now;
+                                    weekItem.Year = weekTime.Year;
+                                    weekItem.Month = weekTime.Month;
+                                    weekItem.WeekSeq = WeekOfMonth(weekTime, 1);
+                                    weekItem.PlanMonth = kMonth;
+                                    weekItem.tenant_id = input.tenant_id;
+                                    weekItem.factory_id = input.factory_id;
+                                    weekItem.company_id = input.company_id;
+                                    weekItem.org_id = input.org_id;
+                                    weekItem.create_time = DateTime.Now;
+                                    weekItem.DistributionChannel = item.distributionchannel;
+                                    weekItem.IsReplenishmentModel = "N";
+                                    if (item.area == "国内" || item.area == "中国")
+                                    {
+                                        weekItem.SterilizationDate = mes_Morder.moentry_sys_etime.Value;
+                                        weekItem.InStockDate = mes_Morder.moentry_sys_etime.Value.AddDays(days);
+                                    }
+                                    else
+                                    {
+                                        weekItem.SterilizationDate = mes_Morder.moentry_sys_etime.Value;
+                                        weekItem.InStockDate = mes_Morder.moentry_sys_etime.Value.AddDays(days);
+                                    }
+                                    weekItem.AssembleHours = 0;
+                                    weekItem.HeatSealHours = 0;
+                                    weekItem.PackageHours = 0;
+                                    weekItem.TotalHours = 0;
+                                    //Q2023/11/15的需求同一周有相同物料的工单不继续生成,不考虑数量的偏差
+                                    if (!weekProductPlanList.Any(a => a.ItemNumber == item.number && a.Week == weekItem.Week))
+                                    {
+                                        weekPlan.Add(weekItem);
+                                        moList.Add(mes_Morder);
+                                        moentryList.Add(mes_Moentry);
+                                    }
+                                }
+                                else
+                                {
+                                    var bom = bomList.Find(b => b.item_number == itemSeq);
+                                    var ic_item = itemList.Find(b => b.number == itemSeq);
+                                    mes_morder mes_Morder = new mes_morder();
+                                    mes_Morder.GenerateNewId(help.NextId());
+                                    mes_Morder.morder_type = MorderEnum.JhMorder;
+                                    mes_Morder.work_order_type = MorderEnum.CgMorder;
+                                    mes_Morder.morder_state = "";
+                                    mes_Morder.morder_no = Guid.NewGuid().ToString();
+                                    mes_Morder.fms_number = ic_item.fms_number;
+                                    mes_Morder.bom_number = bom.bom_number;
+                                    mes_Morder.fmodel = ic_item.model;
+                                    mes_Morder.moentry_startup_status = 0;
+                                    mes_Morder.tenant_id = input.tenant_id;
+                                    mes_Morder.factory_id = input.factory_id;
+                                    mes_Morder.company_id = input.company_id;
+                                    mes_Morder.org_id = input.org_id;
+                                    mes_Morder.product_code = ic_item.number;
+                                    mes_Morder.product_name = ic_item.name;
+                                    mes_Morder.morder_date = DateTime.Now.Date.AddDays(1);
+                                    mes_Morder.moentry_prd = null;
+                                    mes_Morder.moentry_prdname = null;
+                                    mes_Morder.moentry_wrkc = null;
+                                    mes_Morder.moentry_wrkcname = null;
+                                    mes_Morder.picking_qty = 0;
+                                    mes_Morder.unit = ic_item.unit;
+                                    mes_Morder.morder_production_number = Math.Ceiling(itemQty.GetValueOrDefault());
+                                    mes_Morder.need_number = Math.Ceiling(itemQty.GetValueOrDefault());
+                                    //成品半成品取周一为入库时间开始往前推
+                                    mes_Morder.moentry_sys_stime = weekTime.AddDays(-ProductTime(routingOps, ic_item.number, input.factory_id.ToString(), mes_Morder.need_number.GetValueOrDefault()) - days);
+                                    mes_Morder.moentry_sys_etime = weekTime.AddDays(-days);
+                                    mes_Morder.remaining_number = 0;
+                                    mes_Morder.create_time = DateTime.Now;
+                                    mes_Morder.bang_id = bang_id;
+                                    //生成工单子表数据
+                                    mes_moentry mes_Moentry = new mes_moentry();
+                                    mes_Moentry.GenerateNewId(help.NextId());
+                                    mes_Moentry.moentry_moid = mes_Morder.Id;
+                                    mes_Moentry.moentry_mono = mes_Morder.morder_no;
+                                    mes_Moentry.unit = ic_item.unit;
+                                    mes_Moentry.morder_production_number = Math.Ceiling(itemQty.GetValueOrDefault());
+                                    mes_Moentry.need_number =Math.Ceiling(itemQty.GetValueOrDefault());
+                                    mes_Moentry.remaining_number = 0;
+                                    mes_Moentry.tenant_id = input.tenant_id;
+                                    mes_Moentry.factory_id = input.factory_id;
+                                    mes_Moentry.company_id = input.company_id;
+                                    mes_Moentry.org_id = input.org_id;
+                                    mes_Moentry.create_time = DateTime.Now;
+                                    mes_Moentry.bang_id = bang_id;
+
+                                    ReplenishmentWeekPlan weekItem = new ReplenishmentWeekPlan();
+                                    weekItem.Priority = 1;
+                                    weekItem.Area = item.area;
+                                    weekItem.PlanStartDate = mes_Morder.moentry_sys_stime.GetValueOrDefault();
+                                    weekItem.Week = $"WK{GetWeekOfYear(mes_Morder.moentry_sys_stime.Value).ToString("00")}";
+                                    weekItem.OrderNO = Guid.NewGuid().ToString();
+                                    weekItem.ProductionOrder = mes_Morder.morder_no;
+                                    weekItem.SAPOrderNO = "";
+                                    weekItem.OrderType = "量产";
+                                    weekItem.ProductionBatch = "";
+                                    weekItem.ProductionStatus = "";
+                                    weekItem.ProdLine = item.ProdLine;
+                                    weekItem.ProdRange = item.ProdRange;
+                                    weekItem.Line = monthPlanItem?.WorkshopLine;
+                                    weekItem.ItemNumber = item.number;
+                                    weekItem.Model = item.model;
+                                    weekItem.Languages = item.Languages;
+                                    weekItem.Qty = mes_Morder.morder_production_number.Value;
+                                    weekItem.ItemStatus = "";
+                                    weekItem.PlanKittingDate = DateTime.Now;
+                                    weekItem.Year = weekTime.Year;
+                                    weekItem.Month = weekTime.Month;
+                                    weekItem.WeekSeq = WeekOfMonth(weekTime, 1);
+                                    weekItem.PlanMonth = kMonth;
+                                    weekItem.tenant_id = input.tenant_id;
+                                    weekItem.factory_id = input.factory_id;
+                                    weekItem.company_id = input.company_id;
+                                    weekItem.org_id = input.org_id;
+                                    weekItem.create_time = DateTime.Now;
+                                    weekItem.DistributionChannel = item.distributionchannel;
+                                    weekItem.IsReplenishmentModel = "N";
+                                    if (item.area == "国内" || item.area == "中国")
+                                    {
+                                        weekItem.SterilizationDate = mes_Morder.moentry_sys_etime.Value;
+                                        weekItem.InStockDate = mes_Morder.moentry_sys_etime.Value.AddDays(days);
+                                    }
+                                    else
+                                    {
+                                        weekItem.SterilizationDate = mes_Morder.moentry_sys_etime.Value;
+                                        weekItem.InStockDate = mes_Morder.moentry_sys_etime.Value.AddDays(days);
+                                    }
+                                    weekItem.AssembleHours = 0;
+                                    weekItem.HeatSealHours = 0;
+                                    weekItem.PackageHours = 0;
+                                    weekItem.TotalHours = 0;
+                                    //Q2023/11/15的需求同一周有相同物料的工单不继续生成,不考虑数量的偏差
+                                    if (!weekProductPlanList.Any(a => a.ItemNumber == item.number && a.Week == weekItem.Week))
+                                    {
+                                        weekPlan.Add(weekItem);
+                                        moList.Add(mes_Morder);
+                                        moentryList.Add(mes_Moentry);
+                                    }
+                                }
+                            }
+                            continue;
+                        }
+                        if (itemQty > 0)
                         {
                             //四周数量合并,完工日期取第三周的时间
-                            if(k<=3)
+                            if (k<=3)
                             {
                                 var MonthMo = moList.Find(a => a.product_code == itemSeq && (
                                 a.moentry_sys_etime == GetNextMonday().AddDays(28).AddDays(-days) ||
@@ -2598,17 +2968,25 @@ namespace Business.Replenishment
                 var middleItemList = _itemMaster.Select(a => subProductItem.Keys.Contains(a.ItemNum) && a.Domain == input.factory_id.ToString());
                 foreach (var key in subProductItem.Keys)
                 {
-                    var itemQty = subProductItem[key];
-                    var middleItem = middleItemList.Find(m => m.ItemNum == key).MinOrdSales;
-                    if (middleItem == 0)
-                        middleItem = 10000;
-                    if (itemQty < middleItem)
+                    var itemQty = subProductItem[key]/3;
+                    var middle = middleItemList.Find(m => m.ItemNum == key);
+                    var middleItem = middle.MinOrdSales;
+                    if(middleItem > 0)
                     {
-                        itemQty = middleItem;
+                        if (itemQty < middleItem)
+                            itemQty = middleItem;
+                        if (middle.ItemType == "RS30" && middle.PurMfg == "L" && middle.OrdMult > 0)
+                        {
+                            itemQty = Math.Ceiling(Math.Ceiling(itemQty.GetValueOrDefault() / middle.OrdMult) * middle.OrdMult);
+                        }
+                        else
+                        {
+                            itemQty = Math.Ceiling(itemQty.GetValueOrDefault());
+                        }
                     }
-                    else if (middleItem > 0)
+                    else
                     {
-                        itemQty = Math.Ceiling(Math.Ceiling(itemQty.GetValueOrDefault()/ (3*middleItem)) * middleItem);
+                        itemQty = Math.Ceiling(itemQty.GetValueOrDefault());
                     }
                     if(!weeksubPlanList.Any(a=>a.ItemNumber== subProductItemModel[key].item_number && a.PlanMonth== kMonth))
                     {
@@ -4770,18 +5148,17 @@ namespace Business.Replenishment
             List<mes_moentry> moentryList = new List<mes_moentry>();
             var list = _serialNumberAppService.GetBillNo(input.factory_id.ToString(), "M5", productList.Count(), "", 1);
             long bangid = help.NextId();
+
+            
             for (int i = 0;i< productList.Count();i++)
             {
-                if (productList[i].Qty < 0)
+                if (productList[i].Qty<=0)
                     continue;
                 var ic_item = mesItem.Find(x => x.ItemNum == productList[i].SAPItemNumber);
                 var bom = bomList.Find(a => a.item_number == productList[i].SAPItemNumber);
-                ////if (ic_item.PurLT < ropParam.LongPeriodDay)
-                ////    continue;
                 mes_morder mes_Morder = new mes_morder();
                 mes_Morder.GenerateNewId(help.NextId());
                 mes_Morder.morder_type = MorderEnum.JhMorder;
-                //mes_Morder.morder_icitem_type
                 mes_Morder.work_order_type = MorderEnum.CgMorder;
                 mes_Morder.morder_state ="";
                 mes_Morder.morder_no = list[i].NbrResult.ToString();
@@ -4798,14 +5175,11 @@ namespace Business.Replenishment
                 mes_Morder.product_name = ic_item.Descr;
                 mes_Morder.morder_date = DateTime.Now.Date.AddDays(1);
                 mes_Morder.moentry_sys_stime= Convert.ToDateTime(productList[i].PlanMonth + "-01");
-                //mes_Morder.morder_fstate = "计划";
-                //TODO:目前没有取值位置
                 mes_Morder.moentry_prd = null;
                 mes_Morder.moentry_prdname = null;
                 mes_Morder.moentry_wrkc = null;
                 mes_Morder.moentry_wrkcname = null;
                 mes_Morder.picking_qty = 0;
-                //TODO:可删除主表字段
                 mes_Morder.unit = ic_item.UM;
                 mes_Morder.morder_production_number = productList[i].Qty;
                 mes_Morder.need_number = productList[i].Qty;
@@ -4832,6 +5206,7 @@ namespace Business.Replenishment
             //长周期物料只产生PR不生成实际工单
             //await _mysql_mes_morder.InsertManyAsync(moList);
             //await _mysql_mes_moentry.InsertManyAsync(moentryList);
+            moList = moList.OrderBy(a => a.moentry_sys_etime).ToList();
             await PlanOrderResourceCheck(moList,moentryList, bangid,input);
             return "OK";
         }

+ 6 - 0
MicroServices/Business/Business.Domain/StructuredDB/MES/IC/ItemMaster.cs

@@ -133,6 +133,12 @@ namespace Business.Domain
         [Comment("起订量")]
         public decimal MinOrdSales { get; set; }
 
+        /// <summary>
+        /// 订单倍数
+        /// </summary>
+        [Comment("订单倍数")]
+        public decimal OrdMult { get; set; }
+
         /// <summary>
         /// 是否需要走MRP
         /// </summary>