Murphy пре 2 година
родитељ
комит
f0eaf5778e

+ 6 - 1
MicroServices/Business/Business.Application.Contracts/Dto/ReplenishmentDto.cs

@@ -43,6 +43,11 @@ namespace Business.Dto
         /// 注:瑞贝目前是每周日更新 长周期物料需求计算:M+n月。瑞奇的采购周期可长达160天左右,需要6个月的提前计算。
         /// 注:瑞贝有超过12个月的采购周期,在没有12个月的预测时,只能人工估算并手动下订单。
         /// </summary>
-        public int LongPeriodDay { get; set; }        
+        public int LongPeriodDay { get; set; }
+
+        /// <summary>
+        /// 是否使用补货模型,不使用的话月度计划直接按照经济批量分成若干周,不用滚动12周
+        /// </summary>
+        public string IsUseROP { get; set; }
     }
 }

+ 1 - 1
MicroServices/Business/Business.Application.Contracts/ReplenishmentManagement/IReplenishmentAppService.cs

@@ -57,7 +57,7 @@ namespace Business.ReplenishmentManagement
         /// </summary>
         /// <param name="companyId">工厂id</param>
         /// <returns></returns>
-        Task<string> CalcTestWeekPlan(InputDto input);
+        Task<string> CalcTempWeekPlan(InputDto input);
 
         /// <summary>
         /// 根据月计划生产周计划

+ 171 - 135
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -3191,11 +3191,11 @@ namespace Business.Replenishment
         /// </summary>
         /// <param name="input"></param>
         /// <returns></returns>
-        public async Task<string> CalcTestWeekPlan(InputDto input)
+        public async Task<string> CalcTempWeekPlan(InputDto input)
         {
             routingOps = _routingOpDetail.Select(p => p.Domain == input.factory_id.ToString()).ToList();
             long bang_id = help.NextId();
-            var weekplans=_replenishmentWeekPlan.GetListAsync(a=>a.IsReplenishmentModel=="N" && string.IsNullOrEmpty(a.ProductionStatus)).Result;
+            var weekplans=_replenishmentWeekPlan.GetListAsync(a=>a.IsReplenishmentModel=="N" && string.IsNullOrEmpty(a.ProductionStatus) && string.IsNullOrEmpty(a.ProductionOrder) && a.factory_id==input.factory_id).Result;
             var itemIds = weekplans.Select(a => a.ItemNumber).Distinct().ToList();
             var items = _itemMaster.Select(a => itemIds.Contains(a.ItemNum));
 ;            List<mes_morder> moList = new List<mes_morder>();
@@ -4030,78 +4030,91 @@ namespace Business.Replenishment
         /// <param name="domain">工厂编码</param>
         /// <returns></returns>
         //计算工单优先级
-        public List<WorkOrdMaster> CalcPriority(List<string> workOrdMasters,string domain)
-        {
-            var works= _workOrdMaster.Select(a => workOrdMasters.Contains(a.WorkOrd) && a.Domain == domain && a.IsActive);
-            var saleWordOrd = works.Where(a => !string.IsNullOrEmpty(a.SalesJob));
-            Dictionary<string, int> dict = new Dictionary<string, int>();
-            var soList=_mysql_crm_seorder.GetListAsync(a=> saleWordOrd.Select(b=>b.SalesJob).Contains(a.bill_no)).Result;
+        //public List<WorkOrdMaster> CalcPriority(List<string> workOrdMasters,string domain)
+        //{
+        //    var works= _workOrdMaster.Select(a => workOrdMasters.Contains(a.WorkOrd) && a.Domain == domain && a.IsActive);
+        //    var saleWordOrd = works.Where(a => !string.IsNullOrEmpty(a.SalesJob));
+        //    var soList=_mysql_crm_seorder.GetListAsync(a=> saleWordOrd.Select(b=>b.SalesJob).Contains(a.bill_no)).Result;
             
-            var custList = _custMaster.Select(a => soList.Select(b => b.custom_no).Contains(a.Cust) && a.Domain == domain);
-            //T1海外客户
-            var T1CustList = custList.FindAll(a => a.Terms == "T1" || a.Terms == "海外").Select(a => a.Cust);
-            //国科海王客户
-            var T2CustList = custList.FindAll(a => a.Terms == "国科" || a.Terms == "海王").Select(a => a.Cust);
-            //T1海外订单
-            var T1SOList = soList.Where(a => T1CustList.Contains(a.custom_no)).Select(a => a.bill_no);
-            //国科海王订单
-            var T2SOList = soList.Where(a => T2CustList.Contains(a.custom_no)).Select(a => a.bill_no);
-            //T1海外工单
-            var T1WOList = saleWordOrd.Where(a => T1SOList.Contains(a.SalesJob)).ToList();
-            //国科海王工单
-            var T2WOList = saleWordOrd.Where(a => T2SOList.Contains(a.SalesJob)).ToList();
-            //在制工单
-            var inProductList = _mes_mooccupy.GetListAsync(a => works.Select(a => a.WorkOrd).Contains(a.moo_mo)).Result;
-
-            //优先1:T1、海外销售订单新产生的生产指令;
-            var T1WOListNew=T1WOList.Where(a=> !inProductList.Select(b=>b.moo_mo).Contains(a.WorkOrd))?.OrderBy(a => a.DueDate).ThenBy(a => a.OrdDate).ToList();
-            //优先2:T1、海外销售订单关联的在制生产指令;
-            var T1WOListInProduct = T1WOList.Where(a => inProductList.Select(b => b.moo_mo).Contains(a.WorkOrd))?.OrderBy(a => a.DueDate).ThenBy(a => a.OrdDate).ToList();
-            //优先3:平台(国科、海王)销售订单新产生的生产指令;
-            var T2WOListNew = T2WOList.Where(a => !inProductList.Select(b => b.moo_mo).Contains(a.WorkOrd))?.OrderBy(a => a.DueDate).ThenBy(a => a.OrdDate).ToList();
-            //优先4:平台(国科、海王)销售订单关联的在制生产指令;
-            var T2WOListInProduct = T2WOList.Where(a => !inProductList.Select(b => b.moo_mo).Contains(a.WorkOrd))?.OrderBy(a => a.DueDate).ThenBy(a => a.OrdDate).ToList();
-            //优先5:除销售订单以外,计划补货订单关联的生产指令;
-            var PlanWOList = works.Except(T1WOListNew).ToList();
-            PlanWOList = works.Except(T1WOListInProduct).ToList();
-            PlanWOList = works.Except(T2WOListNew).ToList();
-            PlanWOList = works.Except(T2WOListInProduct).ToList();
-            PlanWOList= PlanWOList.OrderBy(a => a.DueDate).ThenBy(a => a.OrdDate).ToList();
-            //先按生产指令的类型,再按生产指令的完工日期顺序排产;
+        //    var custList = _custMaster.Select(a => soList.Select(b => b.custom_no).Contains(a.Cust) && a.Domain == domain);
+        //    //T1海外客户
+        //    var T1CustList = custList.FindAll(a => a.Terms == "T1" || a.Terms == "海外").Select(a => a.Cust);
+        //    //国科海王客户
+        //    var T2CustList = custList.FindAll(a => a.Terms == "国科" || a.Terms == "海王").Select(a => a.Cust);
+        //    //T1海外订单
+        //    var T1SOList = soList.Where(a => T1CustList.Contains(a.custom_no)).Select(a => a.bill_no);
+        //    //国科海王订单
+        //    var T2SOList = soList.Where(a => T2CustList.Contains(a.custom_no)).Select(a => a.bill_no);
+        //    //T1海外工单
+        //    var T1WOList = saleWordOrd.Where(a => T1SOList.Contains(a.SalesJob)).ToList();
+        //    //国科海王工单
+        //    var T2WOList = saleWordOrd.Where(a => T2SOList.Contains(a.SalesJob)).ToList();
+        //    //在制工单
+        //    var inProductList = _mes_mooccupy.GetListAsync(a => works.Select(a => a.WorkOrd).Contains(a.moo_mo)).Result;
+
+        //    //优先1:T1、海外销售订单新产生的生产指令;
+        //    var T1WOListNew=T1WOList.Where(a=> !inProductList.Select(b=>b.moo_mo).Contains(a.WorkOrd))?.OrderBy(a => a.DueDate).ThenBy(a => a.OrdDate).ToList();
+        //    //优先2:T1、海外销售订单关联的在制生产指令;
+        //    var T1WOListInProduct = T1WOList.Where(a => inProductList.Select(b => b.moo_mo).Contains(a.WorkOrd))?.OrderBy(a => a.DueDate).ThenBy(a => a.OrdDate).ToList();
+        //    //优先3:平台(国科、海王)销售订单新产生的生产指令;
+        //    var T2WOListNew = T2WOList.Where(a => !inProductList.Select(b => b.moo_mo).Contains(a.WorkOrd))?.OrderBy(a => a.DueDate).ThenBy(a => a.OrdDate).ToList();
+        //    //优先4:平台(国科、海王)销售订单关联的在制生产指令;
+        //    var T2WOListInProduct = T2WOList.Where(a => !inProductList.Select(b => b.moo_mo).Contains(a.WorkOrd))?.OrderBy(a => a.DueDate).ThenBy(a => a.OrdDate).ToList();
+        //    //优先5:除销售订单以外,计划补货订单关联的生产指令;
+        //    var PlanWOList = works.Except(T1WOListNew).ToList();
+        //    PlanWOList = works.Except(T1WOListInProduct).ToList();
+        //    PlanWOList = works.Except(T2WOListNew).ToList();
+        //    PlanWOList = works.Except(T2WOListInProduct).ToList();
+        //    PlanWOList= PlanWOList.OrderBy(a => a.DueDate).ThenBy(a => a.OrdDate).ToList();
+        //    //先按生产指令的类型,再按生产指令的完工日期顺序排产;
+        //    List<WorkOrdMaster> orderedList = new List<WorkOrdMaster>();
+        //    decimal Priority = 1.0m;
+        //    for (int i=0;i< T1WOListNew.Count;i++)
+        //    {
+        //        T1WOListNew[i].Priority = Priority;
+        //        orderedList.Add(T1WOListNew[i]);
+        //        Priority = Priority + 1.0m;
+        //    }
+
+        //    for (int i = 0; i < T1WOListInProduct.Count; i++)
+        //    {
+        //        T1WOListInProduct[i].Priority = Priority;
+        //        orderedList.Add(T1WOListInProduct[i]);
+        //        Priority = Priority + 1.0m;
+        //    }
+
+        //    for (int i = 0; i < T2WOListNew.Count; i++)
+        //    {
+        //        T2WOListNew[i].Priority = Priority;
+        //        orderedList.Add(T2WOListNew[i]);
+        //        Priority = Priority + 1.0m;
+        //    }
+
+        //    for (int i = 0; i < T2WOListInProduct.Count; i++)
+        //    {
+        //        T2WOListInProduct[i].Priority = Priority;
+        //        orderedList.Add(T2WOListInProduct[i]);
+        //        Priority = Priority + 1.0m;
+        //    }
+
+        //    for (int i = 0; i < PlanWOList.Count; i++)
+        //    {
+        //        PlanWOList[i].Priority = Priority;
+        //        orderedList.Add(PlanWOList[i]);
+        //        Priority = Priority + 1.0m;
+        //    }
+        //    return orderedList;
+        //}
+        public List<WorkOrdMaster> CalcPriority(List<string> workOrdMasters, string domain)
+        {
+            var works = _workOrdMaster.Select(a => workOrdMasters.Contains(a.WorkOrd) && a.Domain == domain && a.IsActive);
+            works = works.OrderBy(a => a.DueDate).ThenBy(a => a.OrdDate).ToList();
             List<WorkOrdMaster> orderedList = new List<WorkOrdMaster>();
             decimal Priority = 1.0m;
-            for (int i=0;i< T1WOListNew.Count;i++)
-            {
-                T1WOListNew[i].Priority = Priority;
-                orderedList.Add(T1WOListNew[i]);
-                Priority = Priority + 1.0m;
-            }
-
-            for (int i = 0; i < T1WOListInProduct.Count; i++)
-            {
-                T1WOListInProduct[i].Priority = Priority;
-                orderedList.Add(T1WOListInProduct[i]);
-                Priority = Priority + 1.0m;
-            }
-
-            for (int i = 0; i < T2WOListNew.Count; i++)
-            {
-                T2WOListNew[i].Priority = Priority;
-                orderedList.Add(T2WOListNew[i]);
-                Priority = Priority + 1.0m;
-            }
-
-            for (int i = 0; i < T2WOListInProduct.Count; i++)
-            {
-                T2WOListInProduct[i].Priority = Priority;
-                orderedList.Add(T2WOListInProduct[i]);
-                Priority = Priority + 1.0m;
-            }
-
-            for (int i = 0; i < PlanWOList.Count; i++)
+            for (int i = 0; i < works.Count; i++)
             {
-                PlanWOList[i].Priority = Priority;
-                orderedList.Add(PlanWOList[i]);
+                works[i].Priority = Priority;
+                orderedList.Add(works[i]);
                 Priority = Priority + 1.0m;
             }
             return orderedList;
@@ -4114,76 +4127,90 @@ namespace Business.Replenishment
         /// <param name="domain">工厂编码</param>
         /// <returns></returns>
         //计算工单优先级
+        //public List<WorkOrdMaster> CalcPriority(List<WorkOrdMaster> works, string domain)
+        //{
+        //    var saleWordOrd = works.Where(a => !string.IsNullOrEmpty(a.SalesJob));
+        //    var soList = _mysql_crm_seorder.GetListAsync(a => saleWordOrd.Select(b => b.SalesJob).Contains(a.bill_no)).Result;
+
+        //    var custList = _custMaster.Select(a => soList.Select(b => b.custom_no).Contains(a.Cust) && a.Domain == domain);
+        //    //T1海外客户
+        //    var T1CustList = custList.FindAll(a => a.Terms == "T1" || a.Terms == "海外").Select(a => a.Cust);
+        //    //国科海王客户
+        //    var T2CustList = custList.FindAll(a => a.Terms == "国科" || a.Terms == "海王").Select(a => a.Cust);
+        //    //T1海外订单
+        //    var T1SOList = soList.Where(a => T1CustList.Contains(a.custom_no)).Select(a => a.bill_no);
+        //    //国科海王订单
+        //    var T2SOList = soList.Where(a => T2CustList.Contains(a.custom_no)).Select(a => a.bill_no);
+        //    //T1海外工单
+        //    var T1WOList = saleWordOrd.Where(a => T1SOList.Contains(a.SalesJob)).ToList();
+        //    //国科海王工单
+        //    var T2WOList = saleWordOrd.Where(a => T2SOList.Contains(a.SalesJob)).ToList();
+        //    //在制工单
+        //    var inProductList = _mes_mooccupy.GetListAsync(a => works.Select(a => a.WorkOrd).Contains(a.moo_mo)).Result;
+
+        //    //优先1:T1、海外销售订单新产生的生产指令;
+        //    var T1WOListNew = T1WOList.Where(a => !inProductList.Select(b => b.moo_mo).Contains(a.WorkOrd))?.OrderBy(a => a.DueDate).ThenBy(a=>a.OrdDate).ToList();
+        //    //优先2:T1、海外销售订单关联的在制生产指令;
+        //    var T1WOListInProduct = T1WOList.Where(a => inProductList.Select(b => b.moo_mo).Contains(a.WorkOrd))?.OrderBy(a => a.DueDate).ThenBy(a=>a.OrdDate).ToList();
+        //    //优先3:平台(国科、海王)销售订单新产生的生产指令;
+        //    var T2WOListNew = T2WOList.Where(a => !inProductList.Select(b => b.moo_mo).Contains(a.WorkOrd))?.OrderBy(a => a.DueDate).ThenBy(a=>a.OrdDate).ToList();
+        //    //优先4:平台(国科、海王)销售订单关联的在制生产指令;
+        //    var T2WOListInProduct = T2WOList.Where(a => !inProductList.Select(b => b.moo_mo).Contains(a.WorkOrd))?.OrderBy(a => a.DueDate).ThenBy(a=>a.OrdDate).ToList();
+        //    //优先5:除销售订单以外,计划补货订单关联的生产指令;
+        //    var PlanWOList = works.Except(T1WOListNew).ToList();
+        //    PlanWOList = works.Except(T1WOListInProduct).ToList();
+        //    PlanWOList = works.Except(T2WOListNew).ToList();
+        //    PlanWOList = works.Except(T2WOListInProduct).ToList();
+        //    PlanWOList = PlanWOList.OrderBy(a => a.DueDate).ThenBy(a=>a.OrdDate).ToList();
+        //    //先按生产指令的类型,再按生产指令的完工日期顺序排产;
+        //    List<WorkOrdMaster> orderedList = new List<WorkOrdMaster>();
+        //    decimal Priority = 1.0m;
+        //    for (int i = 0; i < T1WOListNew.Count; i++)
+        //    {
+        //        T1WOListNew[i].Priority = Priority;
+        //        orderedList.Add(T1WOListNew[i]);
+        //        Priority = Priority + 1.0m;
+        //    }
+
+        //    for (int i = 0; i < T1WOListInProduct.Count; i++)
+        //    {
+        //        T1WOListInProduct[i].Priority = Priority;
+        //        orderedList.Add(T1WOListInProduct[i]);
+        //        Priority = Priority + 1.0m;
+        //    }
+
+        //    for (int i = 0; i < T2WOListNew.Count; i++)
+        //    {
+        //        T2WOListNew[i].Priority = Priority;
+        //        orderedList.Add(T2WOListNew[i]);
+        //        Priority = Priority + 1.0m;
+        //    }
+
+        //    for (int i = 0; i < T2WOListInProduct.Count; i++)
+        //    {
+        //        T2WOListInProduct[i].Priority = Priority;
+        //        orderedList.Add(T2WOListInProduct[i]);
+        //        Priority = Priority + 1.0m;
+        //    }
+
+        //    for (int i = 0; i < PlanWOList.Count; i++)
+        //    {
+        //        PlanWOList[i].Priority = Priority;
+        //        orderedList.Add(PlanWOList[i]);
+        //        Priority = Priority + 1.0m;
+        //    }
+        //    return orderedList;
+        //}
         public List<WorkOrdMaster> CalcPriority(List<WorkOrdMaster> works, string domain)
         {
-            var saleWordOrd = works.Where(a => !string.IsNullOrEmpty(a.SalesJob));
-            var soList = _mysql_crm_seorder.GetListAsync(a => saleWordOrd.Select(b => b.SalesJob).Contains(a.bill_no)).Result;
-
-            var custList = _custMaster.Select(a => soList.Select(b => b.custom_no).Contains(a.Cust) && a.Domain == domain);
-            //T1海外客户
-            var T1CustList = custList.FindAll(a => a.Terms == "T1" || a.Terms == "海外").Select(a => a.Cust);
-            //国科海王客户
-            var T2CustList = custList.FindAll(a => a.Terms == "国科" || a.Terms == "海王").Select(a => a.Cust);
-            //T1海外订单
-            var T1SOList = soList.Where(a => T1CustList.Contains(a.custom_no)).Select(a => a.bill_no);
-            //国科海王订单
-            var T2SOList = soList.Where(a => T2CustList.Contains(a.custom_no)).Select(a => a.bill_no);
-            //T1海外工单
-            var T1WOList = saleWordOrd.Where(a => T1SOList.Contains(a.SalesJob)).ToList();
-            //国科海王工单
-            var T2WOList = saleWordOrd.Where(a => T2SOList.Contains(a.SalesJob)).ToList();
-            //在制工单
-            var inProductList = _mes_mooccupy.GetListAsync(a => works.Select(a => a.WorkOrd).Contains(a.moo_mo)).Result;
-
-            //优先1:T1、海外销售订单新产生的生产指令;
-            var T1WOListNew = T1WOList.Where(a => !inProductList.Select(b => b.moo_mo).Contains(a.WorkOrd))?.OrderBy(a => a.DueDate).ThenBy(a=>a.OrdDate).ToList();
-            //优先2:T1、海外销售订单关联的在制生产指令;
-            var T1WOListInProduct = T1WOList.Where(a => inProductList.Select(b => b.moo_mo).Contains(a.WorkOrd))?.OrderBy(a => a.DueDate).ThenBy(a=>a.OrdDate).ToList();
-            //优先3:平台(国科、海王)销售订单新产生的生产指令;
-            var T2WOListNew = T2WOList.Where(a => !inProductList.Select(b => b.moo_mo).Contains(a.WorkOrd))?.OrderBy(a => a.DueDate).ThenBy(a=>a.OrdDate).ToList();
-            //优先4:平台(国科、海王)销售订单关联的在制生产指令;
-            var T2WOListInProduct = T2WOList.Where(a => !inProductList.Select(b => b.moo_mo).Contains(a.WorkOrd))?.OrderBy(a => a.DueDate).ThenBy(a=>a.OrdDate).ToList();
-            //优先5:除销售订单以外,计划补货订单关联的生产指令;
-            var PlanWOList = works.Except(T1WOListNew).ToList();
-            PlanWOList = works.Except(T1WOListInProduct).ToList();
-            PlanWOList = works.Except(T2WOListNew).ToList();
-            PlanWOList = works.Except(T2WOListInProduct).ToList();
-            PlanWOList = PlanWOList.OrderBy(a => a.DueDate).ThenBy(a=>a.OrdDate).ToList();
+            works = works.OrderBy(a => a.DueDate).ThenBy(a => a.OrdDate).ToList();
             //先按生产指令的类型,再按生产指令的完工日期顺序排产;
             List<WorkOrdMaster> orderedList = new List<WorkOrdMaster>();
             decimal Priority = 1.0m;
-            for (int i = 0; i < T1WOListNew.Count; i++)
+            for (int i = 0; i < works.Count; i++)
             {
-                T1WOListNew[i].Priority = Priority;
-                orderedList.Add(T1WOListNew[i]);
-                Priority = Priority + 1.0m;
-            }
-
-            for (int i = 0; i < T1WOListInProduct.Count; i++)
-            {
-                T1WOListInProduct[i].Priority = Priority;
-                orderedList.Add(T1WOListInProduct[i]);
-                Priority = Priority + 1.0m;
-            }
-
-            for (int i = 0; i < T2WOListNew.Count; i++)
-            {
-                T2WOListNew[i].Priority = Priority;
-                orderedList.Add(T2WOListNew[i]);
-                Priority = Priority + 1.0m;
-            }
-
-            for (int i = 0; i < T2WOListInProduct.Count; i++)
-            {
-                T2WOListInProduct[i].Priority = Priority;
-                orderedList.Add(T2WOListInProduct[i]);
-                Priority = Priority + 1.0m;
-            }
-
-            for (int i = 0; i < PlanWOList.Count; i++)
-            {
-                PlanWOList[i].Priority = Priority;
-                orderedList.Add(PlanWOList[i]);
+                works[i].Priority = Priority;
+                orderedList.Add(works[i]);
                 Priority = Priority + 1.0m;
             }
             return orderedList;
@@ -4587,7 +4614,8 @@ namespace Business.Replenishment
                     {
                         _businessDbContext.BulkUpdate(mo_Mes_Morders);
                         //长周期都是成品检查,生成的都是中间件工单,不需要写入;周计划包含中间件工单,需要写入
-                        if (_CalcBomViewAppService.mordersInsertList.Any() && string.IsNullOrEmpty(analogCalcVersion))
+                        //长周期也需要写入,加字段版本区分
+                        if (_CalcBomViewAppService.mordersInsertList.Any())
                         {
                             var molist = ObjectMapper.Map<List<mo_mes_morder>, List<mes_morder>>(_CalcBomViewAppService.mordersInsertList);
                             _businessDbContext.BulkInsert(molist);
@@ -4602,6 +4630,7 @@ namespace Business.Replenishment
                                 CreateWorkOrdDates(molist, routingOps, workOrdSave, workOrdRoutingSave, workOrdDetails, new List<b_examine_result>(), new List<b_bom_child_examine>());
                                 if (workOrdSave.Any())
                                 {
+                                    workOrdSave.ForEach(a => { a.AnalogCalcVersion = analogCalcVersion; });
                                     workOrdSave = CalcPriority(workOrdSave, input.factoryId.ToString());
                                     _businessDbContext.BulkInsert(workOrdSave);
                                 }
@@ -5508,6 +5537,7 @@ namespace Business.Replenishment
             list.Add("UpdateWeeks");
             list.Add("WeekPlanUpdateDay");
             list.Add("LongPeriodDay");
+            list.Add("IsUseROP");
             var configList = _generalizedCodeMaster.Select(a => a.Domain == domain && a.FldName == "SystemConfig" && list.Contains(a.Val));
 
             ReplenishmentDto replenishmentDto = new ReplenishmentDto();
@@ -5519,6 +5549,7 @@ namespace Business.Replenishment
             replenishmentDto.UpdateWeeks = 12;
             replenishmentDto.WeekPlanUpdateDay = 7;//每周日更新
             replenishmentDto.LongPeriodDay = 60;
+            replenishmentDto.IsUseROP = "否";
             if (configList?.Find(a => a.Val == "HistoryOutStockMonth") != null)
             {
                 replenishmentDto.HistoryOutStockMonth = (int)configList?.Find(a => a.Val == "HistoryOutStockMonth").UDeci1;
@@ -5591,6 +5622,11 @@ namespace Business.Replenishment
             {
                 replenishmentDto.LongPeriodDay = (int)configList?.Find(a => a.Val == "LongPeriodDay").UDeci1;
             }
+
+            if (configList?.Find(a => a.Val == "IsUseROP") != null)
+            {
+                replenishmentDto.IsUseROP =configList?.Find(a => a.Val == "IsUseROP").Ufld1;
+            }
             return replenishmentDto;
         }
 

+ 7 - 0
MicroServices/Business/Business.Domain/MongoDB/Production/mo_mes_morder.cs

@@ -327,5 +327,12 @@ namespace Business.Domain
         /// </summary>
         [Comment("加急级别")]
         public int urgent { get; set; }
+
+        /// <summary>
+        /// 模拟计算版本号,不为空为年度长周期,为空为周计划
+        /// </summary>
+        [Comment("模拟计算版本号,不为空为年度长周期,为空为周计划")]
+        [StringLength(80)]
+        public string analogcalcversion { get; set; }
     }
 }

+ 7 - 0
MicroServices/Business/Business.Domain/StructuredDB/Production/WorkOrdMaster.cs

@@ -166,5 +166,12 @@ namespace Business.Domain
         /// </summary>
         [Comment("批次序列")]
         public string LotSerial { get; set; }
+
+        /// <summary>
+        /// 模拟计算版本号,不为空为年度长周期,为空为周计划
+        /// </summary>
+        [Comment("模拟计算版本号,不为空为年度长周期,为空为周计划")]
+        [StringLength(80)]
+        public string AnalogCalcVersion { get; set; }
     }
 }

+ 7 - 0
MicroServices/Business/Business.Domain/StructuredDB/Production/mes_morder.cs

@@ -328,5 +328,12 @@ namespace Business.Domain
         /// </summary>
         [Comment("加急级别")]
         public int urgent { get; set; }
+
+        /// <summary>
+        /// 模拟计算版本号,不为空为年度长周期,为空为周计划
+        /// </summary>
+        [Comment("模拟计算版本号,不为空为年度长周期,为空为周计划")]
+        [StringLength(80)]
+        public string analogcalcversion { get; set; }
     }
 }

+ 3 - 3
MicroServices/Business/Business.HttpApi/Controllers/ReplenishmentController.cs

@@ -88,10 +88,10 @@ namespace Business.Controllers
         /// <param name="input"></param>
         /// <returns></returns>
         [HttpGet]
-        [Route("calctestweekplan")]
-        public Task<string> CalcTestWeekPlan(InputDto input)
+        [Route("calctempweekplan")]
+        public Task<string> CalcTempWeekPlan(InputDto input)
         {
-            return _ReplenishmentAppService.CalcTestWeekPlan(input);
+            return _ReplenishmentAppService.CalcTempWeekPlan(input);
         }
 
         /// <summary>