Ver Fonte

采购申请合并和发布,按业务要求改成四周合并和发布。

tangdi há 2 anos atrás
pai
commit
97c10f2c5c

+ 67 - 54
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -1152,67 +1152,79 @@ namespace Business.ResourceExamineManagement
             //直接按间隔多少天一次来处理数据,定时任务按周四来考虑。
             DateTime toTime = DateTime.Now; //new DateTime(2023, 7, 6);
             DateTime starttime = toTime.Date.AddDays(1);
-            DateTime endtime = toTime.Date.AddDays(7);
+            DateTime endtime = toTime.Date.AddDays(28);
             //只合并要货令
-            List<srm_pr_main> prlist = _mysql_srm_pr_main.GetListAsync(s => s.company_id.ToString() == companyid && s.pr_ssend_date >= starttime && s.pr_ssend_date <= endtime && s.state == 1).Result;
-            List<ic_item> ic_Items = _mysql_ic_item.GetListAsync(s => s.company_id.ToString() == companyid && prlist.Select(c => c.icitem_id).Distinct().Contains(s.Id)).Result;
+            List<srm_pr_main> alllist = _mysql_srm_pr_main.GetListAsync(s => s.company_id.ToString() == companyid && s.pr_ssend_date >= starttime && s.pr_ssend_date <= endtime && s.state == 1).Result;
+            List<ic_item> ic_Items = _mysql_ic_item.GetListAsync(s => s.company_id.ToString() == companyid && alllist.Select(c => c.icitem_id).Distinct().Contains(s.Id)).Result;
 
-            var occupylist = _mysql_srm_po_occupy.GetListAsync(s => prlist.Select(c => c.Id).Contains(s.polist_id.GetValueOrDefault()) && s.company_id.ToString() == companyid && s.IsDeleted == false).Result;
+            var occupylist = _mysql_srm_po_occupy.GetListAsync(s => alllist.Select(c => c.Id).Contains(s.polist_id.GetValueOrDefault()) && s.company_id.ToString() == companyid && s.IsDeleted == false).Result;
 
-            List<srm_pr_main> insetPrList = new List<srm_pr_main>();
-            List<srm_pr_main> updatePrList = new List<srm_pr_main>();
-            long Nbr = help.NextId();
-            foreach (var pr in prlist)
+            List<srm_pr_main> insetAllList = new List<srm_pr_main>();
+            List<srm_pr_main> updateAllList = new List<srm_pr_main>();
+
+            //每次发布四周的数据
+            for (int i = 0; i < 4; i++)
             {
-                bool bl = pr.sentry_id == null;//区分是销售订单和非销售订单的合并。
-                //找到是否生成了新的PR  当前数据是否已经产生合并,则不再合并。
-                var newPr = insetPrList.Find(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id && s.IsRequireGoods == pr.IsRequireGoods && s.supplier_type==pr.supplier_type && (s.sentry_id == null) == bl);
-                //var newPr = insetPrList.Find(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id);
-                if (newPr == null)
+                starttime = toTime.Date.AddDays(i * 7 + 1);
+                endtime = toTime.Date.AddDays((i + 1) * 7);
+                List<srm_pr_main> prlist = alllist.Where(s => s.pr_ssend_date >= starttime && s.pr_ssend_date <= endtime).ToList();
+                List<srm_pr_main> insetPrList = new List<srm_pr_main>();
+                List<srm_pr_main> updatePrList = new List<srm_pr_main>();
+                long Nbr = help.NextId();
+                foreach (var pr in prlist)
                 {
-                    //有多条才进行合并
-                    var ilist = prlist.Where(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id && s.IsRequireGoods == pr.IsRequireGoods && s.supplier_type == pr.supplier_type && (s.sentry_id == null) == bl).ToList();
-                    //var ilist = prlist.Where(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id).ToList();
-                    if (ilist.Count > 1)
+                    bool bl = pr.sentry_id == null;//区分是销售订单和非销售订单的合并。
+                                                   //找到是否生成了新的PR  当前数据是否已经产生合并,则不再合并。
+                    var newPr = insetPrList.Find(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id && s.IsRequireGoods == pr.IsRequireGoods && s.supplier_type == pr.supplier_type && (s.sentry_id == null) == bl);
+                    if (newPr == null)
                     {
-                        var icitem = ic_Items.Find(s => s.Id == pr.icitem_id);
-                        var prRefoccupy = occupylist.Where(s => s.polist_id == pr.Id).ToList();
-                        newPr = help.DeepCopy(pr);
-                        newPr.GenerateNewId(help.NextId());
-                        prRefoccupy.ForEach(a => {
-                            a.polist_id = newPr.Id;
-                        });
-                        newPr.pr_billno = Nbr.ToString();//pr单号
-                        newPr.state = pr.state;
-                        newPr.pr_rqty = ilist.Sum(s => s.pr_rqty);//需求数量
-                        newPr.pr_aqty = ilist.Sum(s => s.pr_aqty);//申请数量
-                        newPr.pr_sqty = ilist.Sum(s => s.pr_sqty);//建议数量
-
-                        newPr.pr_ssend_date = ilist.Min(s => s.pr_ssend_date);//系统建议下单日期
-                        newPr.pr_sarrive_date = ilist.Min(s => s.pr_sarrive_date);//系统建议到达日期(建议到货日期)
-                        /*            newPr.pr_psend_date = ilist.Min(s => s.pr_psend_date);//计划下单日期
-                                    newPr.pr_parrive_date = ilist.Min(s => s.pr_parrive_date);//计划到达日期
-                                    newPr.pr_rarrive_date = ilist.Min(s => s.pr_rarrive_date);//需求到货日期*/
-
-                        //newPr.pr_sysprice = newPr.pr_rqty * pr.pr_price * (1 + pr.pr_rate);//系统价格(含税)
-                        newPr.pr_orderprice = newPr.pr_aqty * pr.pr_sysprice;//订单价格(含税)
-                        ilist.ForEach(s => { s.refer_pr_billno = newPr.pr_billno; });
-                        insetPrList.Add(newPr);
-                        ilist.ForEach(s => { s.state = 0; });
-                        updatePrList.AddRange(ilist);
-                        Nbr++;
+                        //有多条才进行合并
+                        var ilist = prlist.Where(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id && s.IsRequireGoods == pr.IsRequireGoods && s.supplier_type == pr.supplier_type && (s.sentry_id == null) == bl).ToList();
+                        //var ilist = prlist.Where(s => s.pr_purchaseid == pr.pr_purchaseid && s.icitem_id == pr.icitem_id).ToList();
+                        if (ilist.Count > 1)
+                        {
+                            var icitem = ic_Items.Find(s => s.Id == pr.icitem_id);
+                            var prRefoccupy = occupylist.Where(s => s.polist_id == pr.Id).ToList();
+                            newPr = help.DeepCopy(pr);
+                            newPr.GenerateNewId(help.NextId());
+                            prRefoccupy.ForEach(a => {
+                                a.polist_id = newPr.Id;
+                            });
+                            newPr.pr_billno = Nbr.ToString();//pr单号
+                            newPr.state = pr.state;
+                            newPr.pr_rqty = ilist.Sum(s => s.pr_rqty);//需求数量
+                            newPr.pr_aqty = ilist.Sum(s => s.pr_aqty);//申请数量
+                            newPr.pr_sqty = ilist.Sum(s => s.pr_sqty);//建议数量
+
+                            newPr.pr_ssend_date = ilist.Min(s => s.pr_ssend_date);//系统建议下单日期
+                            newPr.pr_sarrive_date = ilist.Min(s => s.pr_sarrive_date);//系统建议到达日期(建议到货日期)
+                            /*            newPr.pr_psend_date = ilist.Min(s => s.pr_psend_date);//计划下单日期
+                                        newPr.pr_parrive_date = ilist.Min(s => s.pr_parrive_date);//计划到达日期
+                                        newPr.pr_rarrive_date = ilist.Min(s => s.pr_rarrive_date);//需求到货日期*/
+
+                            //newPr.pr_sysprice = newPr.pr_rqty * pr.pr_price * (1 + pr.pr_rate);//系统价格(含税)
+                            newPr.pr_orderprice = newPr.pr_aqty * pr.pr_sysprice;//订单价格(含税)
+                            ilist.ForEach(s => { s.refer_pr_billno = newPr.pr_billno; });
+                            insetPrList.Add(newPr);
+                            ilist.ForEach(s => { s.state = 0; });
+                            updatePrList.AddRange(ilist);
+                            Nbr++;
+                        }
                     }
                 }
+                insetAllList.AddRange(insetPrList);
+                updateAllList.AddRange(updatePrList);
             }
-            if (insetPrList.Any())
+
+            if (insetAllList.Any())
             {
-                var nbrlistDto = _serialNumberAppService.GetBillNo(insetPrList[0].factory_id.ToString(), "PR", insetPrList.Count, "admin", 1);
+                var nbrlistDto = _serialNumberAppService.GetBillNo(insetAllList[0].factory_id.ToString(), "PR", insetAllList.Count, "admin", 1);
                 int index = 0;
-                foreach (var p in insetPrList)
+                foreach (var p in insetAllList)
                 {
                     if (nbrlistDto[index] != null)
                     {
-                        updatePrList.Where(x => x.refer_pr_billno == p.pr_billno).ToList().ForEach(c =>
+                        updateAllList.Where(x => x.refer_pr_billno == p.pr_billno).ToList().ForEach(c =>
                         {
                             c.refer_pr_billno = nbrlistDto[index].NbrResult.ToString();
                         });
@@ -1238,13 +1250,13 @@ namespace Business.ResourceExamineManagement
                 try
                 {
                     
-                    if (insetPrList.Any())
+                    if (insetAllList.Any())
                     {
-                        _businessDbContext.BulkInsert(insetPrList);
+                        _businessDbContext.BulkInsert(insetAllList);
                     }
-                    if (updatePrList.Any())
+                    if (updateAllList.Any())
                     {
-                        _businessDbContext.BulkUpdate(updatePrList);
+                        _businessDbContext.BulkUpdate(updateAllList);
                     }
                     if (occupylist.Any())
                     {
@@ -1266,9 +1278,10 @@ namespace Business.ResourceExamineManagement
         /// <param name="companyid"></param>
         public async Task<string> PrSendSAP(string companyid)
         {
+            //按要求推送四周数据
             DateTime toTime = DateTime.Now;
             DateTime starttime = toTime.Date.AddDays(1);
-            DateTime endtime = toTime.Date.AddDays(7);
+            DateTime endtime = toTime.Date.AddDays(28);
             //取出采购申请数据
             List<srm_pr_main> prapplyList = _mysql_srm_pr_main.GetListAsync(s => s.company_id.ToString() == companyid && s.pr_ssend_date >= starttime && s.pr_ssend_date <= endtime && s.state == 1 && s.IsRequireGoods == 0).Result;
             string seqSql = "";
@@ -1387,10 +1400,10 @@ namespace Business.ResourceExamineManagement
         //PR自动审核
         public async Task<string> PrAutoApprove(string companyid)
         {
-            //直接按间隔多少天一次来处理数据,定时任务按周四来考虑
+            //按要求改成发布四周任务
             DateTime toTime = DateTime.Now.Date;
             DateTime starttime = toTime.AddDays(1);
-            DateTime endtime = toTime.AddDays(7);
+            DateTime endtime = toTime.AddDays(28);
             List<srm_pr_main> prlist = _mysql_srm_pr_main.GetListAsync(s => s.company_id.ToString() == companyid && s.IsRequireGoods == 1 && s.pr_ssend_date >= starttime &&
             s.pr_ssend_date <= endtime && s.state == 1).Result;