|
|
@@ -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;
|
|
|
|