Bläddra i källkod

排除长周期采购,安全库存默认为1

Pengxy 9 månader sedan
förälder
incheckning
7aed4ace9c

+ 38 - 20
MicroServices/Business/Business.Application/ReplenishmentManagement/ReplenishmentAppService.cs

@@ -560,27 +560,45 @@ namespace Business.Replenishment
             //获取在制数量 获取工单数取每年4月到12月底的工单
             DateTime startYear = new DateTime(DateTime.Now.AddYears(-1).Year, 4, 1);
             DateTime endYear = new DateTime(DateTime.Now.Year, 12, 31);
-            List<WorkOrdRouting> workOrdRoutings = _workOrdRouting.Select(x => x.IsActive && x.QtyComplete > 0 && x.Domain == input.factory_id.ToString()).Where(p => p.DueDate >= startYear && p.DueDate <= endYear).ToList();
+            //List<WorkOrdRouting> workOrdRoutings = _workOrdRouting.Select(x => x.IsActive && x.QtyComplete > 0 && x.Domain == input.factory_id.ToString()).Where(p => p.DueDate >= startYear && p.DueDate <= endYear).ToList();
             decimal? InProductionQty = 0.00m;
-            var workOrds = workOrdRoutings.GroupBy(x => x.WorkOrd).ToList();
+            //var workOrds = workOrdRoutings.GroupBy(x => x.WorkOrd).ToList();
             Dictionary<string, decimal> dictInProduction = new Dictionary<string, decimal>();
+            ////按照工单循环
+            ////某工单10-90工序   Max(10-80工序QtyComplete)-90工序QtyComplete =在制数量
+            //foreach (var item in workOrds)
+            //{
+            //    var workOrdRoutingList = workOrdRoutings.Where(x => x.WorkOrd == item.Key).OrderByDescending(o => o.OP).ToList();
+            //    //找出最大工序
+            //    var MaxOp = workOrdRoutingList.FirstOrDefault();
+            //    //查询出其他工序最大值
+            //    var MaxQtyComplete = workOrdRoutingList.Where(x => x.RecID != MaxOp.RecID).ToList().Max(o => o.QtyComplete);
+            //    InProductionQty += MaxQtyComplete - MaxOp.QtyComplete;
+            //    if (dictInProduction.ContainsKey(MaxOp.ItemNum))
+            //    {
+            //        dictInProduction[MaxOp.ItemNum] += InProductionQty.Value;
+            //    }
+            //    else
+            //    {
+            //        dictInProduction.Add(MaxOp.ItemNum, InProductionQty.Value);
+            //    }
+            //}
+            List<WorkOrdMaster> workOrdMasters = _workOrdMaster.Select(x => x.IsActive && x.Status != "C" && x.QtyOrded - x.QtyCompleted > 0 && x.Domain == input.factory_id.ToString()).Where(p => p.DueDate >= startYear && p.DueDate <= endYear).ToList();
+            var workOrds = workOrdMasters.GroupBy(x => x.WorkOrd).ToList();
             //按照工单循环
             //某工单10-90工序   Max(10-80工序QtyComplete)-90工序QtyComplete =在制数量
             foreach (var item in workOrds)
             {
-                var workOrdRoutingList = workOrdRoutings.Where(x => x.WorkOrd == item.Key).OrderByDescending(o => o.OP).ToList();
-                //找出最大工序
-                var MaxOp = workOrdRoutingList.FirstOrDefault();
                 //查询出其他工序最大值
-                var MaxQtyComplete = workOrdRoutingList.Where(x => x.RecID != MaxOp.RecID).ToList().Max(o => o.QtyComplete);
-                InProductionQty += MaxQtyComplete - MaxOp.QtyComplete;
-                if (dictInProduction.ContainsKey(MaxOp.ItemNum))
+                var works = workOrdMasters.Where(x => x.WorkOrd == item.Key).ToList().FirstOrDefault();
+                InProductionQty += works.QtyOrded - works.QtyCompleted;
+                if (dictInProduction.ContainsKey(works.ItemNum))
                 {
-                    dictInProduction[MaxOp.ItemNum] += InProductionQty.Value;
+                    dictInProduction[works.ItemNum] += InProductionQty.Value;
                 }
                 else
                 {
-                    dictInProduction.Add(MaxOp.ItemNum, InProductionQty.Value);
+                    dictInProduction.Add(works.ItemNum, InProductionQty.Value);
                 }
             }
             #endregion
@@ -720,7 +738,7 @@ namespace Business.Replenishment
                     var toDelete = _businessDbContext.ReplenishmentAnnualProduction.Where(a => a.Year == input.year && a.factory_id == input.factory_id).ToList();
                     await _businessDbContext.BulkDeleteAsync(toDelete);
                     await _businessDbContext.BulkInsertAsync(annualProductionOutlines);
-                    await CalcLongPeriodItemPR(input);
+                    //await CalcLongPeriodItemPR(input);
                     await CalcROP(input);
                     await SaveProductionMasterPlan(input, annualProductionOutlines);
                     //await CalcWeekPlan(input);
@@ -826,8 +844,8 @@ namespace Business.Replenishment
                     {
                         plan.PlanProductQty = Math.Ceiling(item.Qty -
                         (
-                         preMaster.PlanStockQty -
-                         ropItem.security_stock.GetValueOrDefault()
+                         preMaster.PlanStockQty -1
+                         //ropItem.security_stock.GetValueOrDefault()
                         ));//发货计划-(上个月期末库存作为本月期初库存-安全库存)
                         if (plan.PlanProductQty < 0)
                         {
@@ -839,8 +857,8 @@ namespace Business.Replenishment
                     {
                         plan.PlanProductQty = Math.Ceiling(item.Qty -
                         (
-                         preStock.PlanStockQty -
-                         ropItem.security_stock.GetValueOrDefault()
+                         preStock.PlanStockQty -1
+                         //ropItem.security_stock.GetValueOrDefault()
                         ));//发货计划-(上个月期末库存作为本月期初库存-安全库存)
                         if (plan.PlanProductQty < 0)
                         {
@@ -861,7 +879,7 @@ namespace Business.Replenishment
                             itemInProdcutQty = InProdcutQty.Find(a => a.ItemNumber == item.SAPItemNumber).Qty;
                         }
                         plan.PlanProductQty = item.Qty -
-                        (itemStockQty + itemInProdcutQty - ropItem.security_stock.GetValueOrDefault()
+                        (itemStockQty + itemInProdcutQty - 1//ropItem.security_stock.GetValueOrDefault()
                         );//发货计划-(库存+在制-安全库存)
                         if (plan.PlanProductQty < 0)
                             plan.PlanProductQty = 0;
@@ -3214,7 +3232,7 @@ namespace Business.Replenishment
                 });
                 _businessDbContext.BulkInsert(workOrdDetails);
             }
-            await PlanOrderResourceCheck(moList.OrderBy(a => a.moentry_sys_stime).ToList(), moentryList, bang_id, "", false, false);
+            await PlanOrderResourceCheck(moList.OrderBy(a => a.moentry_sys_stime).ToList(), moentryList, bang_id, "", false, false,false);
 
             var examine_resultList = _mysql_examine_result.GetListAsync(a => a.bangid == bang_id).Result;
 
@@ -3631,7 +3649,7 @@ namespace Business.Replenishment
             //await _mysql_bom_child_examine.HardDeleteAsync(a => examine_result.Select(b => b.Id).ToList().Contains(a.examine_id.Value) && a.factory_id == input.factory_id);
             //await _mysql_examine_result.HardDeleteAsync(examine_result);
 
-            await PlanOrderResourceCheck(moListCheck.OrderBy(a => a.moentry_sys_stime).ToList(), moEntryListCheck, bang_id, "", false, true);
+            await PlanOrderResourceCheck(moListCheck.OrderBy(a => a.moentry_sys_stime).ToList(), moEntryListCheck, bang_id, "", false, true,false);
 
             var examine_resultList = _mysql_examine_result.GetListAsync(a => a.bangid == bang_id).Result;
 
@@ -4940,7 +4958,7 @@ namespace Business.Replenishment
                             a.QtyOrded = newqty;
                         });
 
-                        await PlanOrderResourceCheck(moList.OrderBy(a => a.moentry_sys_stime).ToList(), moentryList, bang_id, "", true, false);
+                        await PlanOrderResourceCheck(moList.OrderBy(a => a.moentry_sys_stime).ToList(), moentryList, bang_id, "", true, false,false);
 
                         var examine_resultList = _mysql_examine_result.GetListAsync(a => a.bangid == bang_id).Result;
                         if (weekPlan.IsReplenishmentModel == "N")
@@ -7002,7 +7020,7 @@ namespace Business.Replenishment
             //await _mysql_mes_morder.InsertManyAsync(moList);
             //await _mysql_mes_moentry.InsertManyAsync(moentryList);
             moList = moList.OrderBy(a => a.moentry_sys_stime).ToList();
-            await PlanOrderResourceCheck(moList, moentryList, bangid, $"V{DateTime.Now.ToString("yyyyMMddHHmm")}", false, false);
+            await PlanOrderResourceCheck(moList, moentryList, bangid, $"V{DateTime.Now.ToString("yyyyMMddHHmm")}", false, false,false);
             return "OK";
         }
 

+ 42 - 0
MicroServices/Business/QuartzSettings/logs/logs.txt

@@ -4414,3 +4414,45 @@
 {"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-07-16T13:25:30.3813468+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-07-16T13:25:30.3862471+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-07-16T13:25:30.388046+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:12:46.2917171+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:12:46.3303125+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:12:46.3334444+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:12:46.3349945+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:12:46.3400509+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-07-16T14:12:46.3427244+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:40:04.9926842+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:40:05.0318257+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:40:05.0350715+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:40:05.0365415+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:40:05.041389+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-07-16T14:40:05.0434027+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:50:10.4902966+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:50:10.5255862+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:50:10.5287728+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:50:10.5300325+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:50:10.5342353+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-07-16T14:50:10.5360326+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:53:18.9814733+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:53:19.0174529+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:53:19.0202321+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:53:19.0219333+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-07-16T14:53:19.0259904+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-07-16T14:53:19.0283831+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-07-16T15:06:48.3503106+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-07-16T15:06:48.3816302+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-07-16T15:06:48.3846531+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-07-16T15:06:48.3862715+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-07-16T15:06:48.3907798+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-07-16T15:06:48.3923581+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-07-16T15:14:57.1881436+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-07-16T15:14:57.2279383+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-07-16T15:14:57.2308044+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-07-16T15:14:57.2323278+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-07-16T15:14:57.2362374+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-07-16T15:14:57.2385063+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-07-16T15:33:16.9197727+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-07-16T15:33:16.9535677+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-07-16T15:33:16.9561814+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-07-16T15:33:16.9575416+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-07-16T15:33:16.9623019+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-07-16T15:33:16.9641907+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}