|
|
@@ -1018,7 +1018,7 @@ namespace Business.ResourceExamineManagement
|
|
|
else {
|
|
|
return JsonConvert.SerializeObject("所选采购申请单未找到,请刷新界面重新操作。");
|
|
|
}
|
|
|
-
|
|
|
+ List<srm_po_occupy> occupylist = _mysql_srm_po_occupy.GetListAsync(s => idList.Contains(s.polist_id.GetValueOrDefault())).Result;
|
|
|
srm_pr_main srm_Pr = help.DeepCopy(prlist[0]);
|
|
|
srm_Pr.GenerateNewId(help.NextId());
|
|
|
srm_Pr.pr_billno = prlist[0].pr_type == 2 ? _CalcBomViewAppService.getOrderNum("WWPR") : _CalcBomViewAppService.getOrderNum("PR");//pr单号
|
|
|
@@ -1058,12 +1058,14 @@ namespace Business.ResourceExamineManagement
|
|
|
srm_Pr.tenant_id = prlist[0].tenant_id;
|
|
|
srm_Pr.factory_id = prlist[0].factory_id;*/
|
|
|
prlist.ForEach(s => { s.state = 0; s.refer_pr_billno = srm_Pr.pr_billno; });
|
|
|
+ occupylist.ForEach(s => { s.polist_id = srm_Pr.Id; });
|
|
|
using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
_businessDbContext.BulkUpdate(prlist);
|
|
|
_businessDbContext.BulkInsert(new List<srm_pr_main> { srm_Pr });
|
|
|
+ _businessDbContext.BulkUpdate(occupylist);
|
|
|
await unitOfWork.CompleteAsync();
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
@@ -1089,6 +1091,9 @@ namespace Business.ResourceExamineManagement
|
|
|
DateTime endtime = toTime.Date.AddDays(14);
|
|
|
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 || s.state == 3)).Result;
|
|
|
List<ic_item> ic_Items = _mysql_ic_item.GetListAsync(s => s.company_id.ToString() == companyid && prlist.Select(c => c.icitem_id).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;
|
|
|
+
|
|
|
List<PrWeekDto> prWeekDtos = new List<PrWeekDto>();
|
|
|
|
|
|
List<srm_pr_main> insetPrList = new List<srm_pr_main>();
|
|
|
@@ -1108,9 +1113,12 @@ namespace Business.ResourceExamineManagement
|
|
|
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 = pr.pr_type == 2 ? _CalcBomViewAppService.getOrderNum("WWPR") : _CalcBomViewAppService.getOrderNum("PR");//pr单号
|
|
|
newPr.state = pr.state;
|
|
|
newPr.pr_rqty = ilist.Sum(s => s.pr_rqty);//需求数量
|
|
|
@@ -1196,6 +1204,10 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
_businessDbContext.BulkUpdate(updatePrList);
|
|
|
}
|
|
|
+ if (occupylist.Any())
|
|
|
+ {
|
|
|
+ _businessDbContext.BulkUpdate(occupylist);
|
|
|
+ }
|
|
|
unitOfWork.CompleteAsync();
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
@@ -1312,7 +1324,7 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
|
if (poaction.poOccupiesList.Any())
|
|
|
{
|
|
|
- _businessDbContext.BulkInsert(poaction.poOccupiesList);
|
|
|
+ _businessDbContext.BulkUpdate(poaction.poOccupiesList);
|
|
|
}
|
|
|
|
|
|
if (poaction.poMasterList.Any())
|
|
|
@@ -1397,7 +1409,7 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
|
if (poaction.poOccupiesList.Any())
|
|
|
{
|
|
|
- _businessDbContext.BulkInsert(poaction.poOccupiesList);
|
|
|
+ _businessDbContext.BulkUpdate(poaction.poOccupiesList);
|
|
|
}
|
|
|
|
|
|
if (poaction.poMasterList.Any())
|
|
|
@@ -1865,41 +1877,52 @@ namespace Business.ResourceExamineManagement
|
|
|
await _mes_mooccupy.InsertManyAsync(moMes_mooccupy);
|
|
|
}
|
|
|
}
|
|
|
- //TODO:要不要根据某些条件只同步有效的数据
|
|
|
- //采购订单
|
|
|
- var srm_po_main = _mysql_srm_po_main.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
|
|
|
- if (srm_po_main.Count > 0)
|
|
|
- {
|
|
|
- var moSrm_po_main = ObjectMapper.Map<List<srm_po_main>, List<mo_srm_po_main>>(srm_po_main);
|
|
|
- moSrm_po_main.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
- await _srm_po_main.InsertManyAsync(moSrm_po_main);
|
|
|
- }
|
|
|
+ //根据物料信息,只同步在途未关闭的采购订单和采购申请
|
|
|
|
|
|
//采购订单明细
|
|
|
- var srm_po_list = _mysql_srm_po_list.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
|
|
|
+ var srm_po_list = _mysql_srm_po_list.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && itemIds.Contains(x.icitem_id.GetValueOrDefault())).Result;
|
|
|
if (srm_po_list.Count > 0)
|
|
|
{
|
|
|
- var moSrm_po_list = ObjectMapper.Map<List<srm_po_list>, List<mo_srm_po_list>>(srm_po_list);
|
|
|
- moSrm_po_list.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
- await _srm_po_list.InsertManyAsync(moSrm_po_list);
|
|
|
- }
|
|
|
-
|
|
|
- //采购订单占用详情
|
|
|
- var srm_po_occupy = _mysql_srm_po_occupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId).Result;
|
|
|
- if (srm_po_occupy.Count > 0)
|
|
|
- {
|
|
|
- var moSrm_po_occupy = ObjectMapper.Map<List<srm_po_occupy>, List<mo_srm_po_occupy>>(srm_po_occupy);
|
|
|
- moSrm_po_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
- await _srm_po_occupy.InsertManyAsync(moSrm_po_occupy);
|
|
|
+ //采购订单--取出状态为在途的PO
|
|
|
+ var srm_po_main = _mysql_srm_po_main.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && srm_po_list.Select(c => c.po_id).Contains(x.Id) && (x.state == 0 || x.state == 1)).Result;
|
|
|
+ if (srm_po_main.Count > 0)
|
|
|
+ {
|
|
|
+ var moSrm_po_main = ObjectMapper.Map<List<srm_po_main>, List<mo_srm_po_main>>(srm_po_main);
|
|
|
+ moSrm_po_main.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
+ await _srm_po_main.InsertManyAsync(moSrm_po_main);
|
|
|
+
|
|
|
+ //订单明细--根据在途PO过滤出有效的Po_list
|
|
|
+ srm_po_list = srm_po_list.Where(s => srm_po_main.Select(x => x.Id).Contains(s.po_id.GetValueOrDefault())).ToList();
|
|
|
+ var moSrm_po_list = ObjectMapper.Map<List<srm_po_list>, List<mo_srm_po_list>>(srm_po_list);
|
|
|
+ moSrm_po_list.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
+ await _srm_po_list.InsertManyAsync(moSrm_po_list);
|
|
|
+ }
|
|
|
+ //采购订单明细占用详情
|
|
|
+ var srm_po_occupy = _mysql_srm_po_occupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && srm_po_list.Select(c => c.Id).Contains(x.polist_id.GetValueOrDefault())).Result;
|
|
|
+ if (srm_po_occupy.Count > 0)
|
|
|
+ {
|
|
|
+ var moSrm_po_occupy = ObjectMapper.Map<List<srm_po_occupy>, List<mo_srm_po_occupy>>(srm_po_occupy);
|
|
|
+ moSrm_po_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
+ await _srm_po_occupy.InsertManyAsync(moSrm_po_occupy);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//pr
|
|
|
- var srm_pr_main = _mysql_srm_pr_main.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && itemIds.Contains(x.icitem_id.GetValueOrDefault())).Result;
|
|
|
+ var srm_pr_main = _mysql_srm_pr_main.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && x.state != 0 && itemIds.Contains(x.icitem_id.GetValueOrDefault())).Result;
|
|
|
if(srm_pr_main.Count>0)
|
|
|
{
|
|
|
var moSrm_pr_main = ObjectMapper.Map<List<srm_pr_main>, List<mo_srm_pr_main>>(srm_pr_main);
|
|
|
moSrm_pr_main.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
await _srm_pr_main.InsertManyAsync(moSrm_pr_main);
|
|
|
+
|
|
|
+ //采购申请占用详情
|
|
|
+ var srm_pr_occupy = _mysql_srm_po_occupy.GetListAsync(x => x.company_id == companyId && x.factory_id == factoryId && srm_pr_main.Select(c => c.Id).Contains(x.polist_id.GetValueOrDefault())).Result;
|
|
|
+ if (srm_pr_occupy.Count > 0)
|
|
|
+ {
|
|
|
+ var moSrm_pr_occupy = ObjectMapper.Map<List<srm_po_occupy>, List<mo_srm_po_occupy>>(srm_pr_occupy);
|
|
|
+ moSrm_pr_occupy.ForEach(item => { item.GenerateNewId(help.NextId()); item.bang_id = bangid; });
|
|
|
+ await _srm_po_occupy.InsertManyAsync(moSrm_pr_occupy);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -2049,7 +2072,11 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
List<srm_po_main> polist = new List<srm_po_main>();
|
|
|
List<srm_po_list> podetaillist = new List<srm_po_list>();
|
|
|
+ List<srm_po_occupy> pooccupylist = new List<srm_po_occupy>();
|
|
|
List<POGroupDto> pOGroupDtos = new List<POGroupDto>();
|
|
|
+
|
|
|
+ var occupyList = _mysql_srm_po_occupy.GetListAsync(s => list.Select(c => c.Id).Contains(s.polist_id.GetValueOrDefault()) && s.company_id == list[0].company_id && s.factory_id == list[0].factory_id && s.IsDeleted == false).Result;
|
|
|
+
|
|
|
//合并条件:目前传入的数据是一周的数据,暂时不考虑多周数据合并。
|
|
|
//标准类 1.销售订单产生 2.计划工单产生
|
|
|
//物料属性 委外 外购
|
|
|
@@ -2103,11 +2130,17 @@ namespace Business.ResourceExamineManagement
|
|
|
podetail.factory_id = param.factoryId;
|
|
|
podetail.company_id = param.company_id;
|
|
|
podetail.stock_id = 1;
|
|
|
+ var refProccupy = occupyList.Where(s => s.polist_id == item.Id).ToList();
|
|
|
+ refProccupy.ForEach(f =>
|
|
|
+ {
|
|
|
+ f.polist_id = podetail.Id;
|
|
|
+ });
|
|
|
+ poaction.poOccupiesList.AddRange(refProccupy);
|
|
|
podetaillist.Add(podetail);
|
|
|
poDto.polist.Add(podetail);
|
|
|
}
|
|
|
- List<srm_pr_main> referlist = new List<srm_pr_main>();
|
|
|
- RecursionGetDbPr(list, referlist);
|
|
|
+ /*List<srm_pr_main> referlist = new List<srm_pr_main>();
|
|
|
+ RecursionGetDbPr(list, referlist);*/
|
|
|
//组合PO
|
|
|
foreach (var dto in pOGroupDtos)
|
|
|
{
|
|
|
@@ -2148,7 +2181,7 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
var toPr = list.Find(s => s.Id == p.pr_id);
|
|
|
List<srm_pr_main> clist = new List<srm_pr_main>();
|
|
|
- RecursionPr(toPr, referlist, clist);
|
|
|
+ /*RecursionPr(toPr, referlist, clist);
|
|
|
if (clist.Any())
|
|
|
{
|
|
|
clist.ForEach(c =>
|
|
|
@@ -2176,7 +2209,7 @@ namespace Business.ResourceExamineManagement
|
|
|
poaction.poOccupiesList.Add(srm_Po_Occupy);
|
|
|
}
|
|
|
});
|
|
|
- }
|
|
|
+ }*/
|
|
|
|
|
|
po_Main.po_total += p.total_price;
|
|
|
p.po_id = po_Main.Id;
|
|
|
@@ -2187,7 +2220,6 @@ namespace Business.ResourceExamineManagement
|
|
|
row++;
|
|
|
});
|
|
|
}
|
|
|
-
|
|
|
poaction.poMain.AddRange(polist);
|
|
|
poaction.polist.AddRange(podetaillist);
|
|
|
List<PurOrdMaster> purOrdMasters = new List<PurOrdMaster>();
|
|
|
@@ -3221,12 +3253,14 @@ namespace Business.ResourceExamineManagement
|
|
|
List<mo_mes_mooccupy> mes_mooccupyList = _mes_mooccupy.GetListAsync(x => x.moo_state == 1 && !x.IsDeleted && x.company_id == param.company_id
|
|
|
&& boms.Select(p => p.item_number).Contains(x.fitem_number) && x.bang_id == bangid).Result;
|
|
|
|
|
|
+ List<long> occoupyRefId = new List<long>();
|
|
|
//物料采购订单明细
|
|
|
var poDetailList = _srm_po_list.GetListAsync(x => icitemlist.Select(p => p.mysql_id).ToList().Contains(x.icitem_id.Value) && x.bang_id == bangid && x.state == 1 && x.rstate == 1 && !x.IsDeleted).Result;
|
|
|
- //采购订单占用数据
|
|
|
- var poOccupys = _srm_po_occupy.GetListAsync(x => poDetailList.Select(p => p.Id).ToList().Contains(x.polist_id) && x.bang_id == bangid && !x.IsDeleted).Result;
|
|
|
-
|
|
|
- var srm_pr_mains = _srm_pr_main.GetListAsync(x => icitemlist.Select(p => p.mysql_id).ToList().Contains(x.icitem_id.Value) && x.bang_id == bangid && x.state == 0 && !x.IsDeleted).Result;
|
|
|
+ occoupyRefId.AddRange(poDetailList.Select(p => p.Id).ToList());
|
|
|
+ var srm_pr_mains = _srm_pr_main.GetListAsync(x => icitemlist.Select(p => p.mysql_id).ToList().Contains(x.icitem_id.Value) && x.bang_id == bangid && x.state != 0 && !x.IsDeleted).Result;
|
|
|
+ occoupyRefId.AddRange(srm_pr_mains.Select(p => p.Id).ToList());
|
|
|
+ //采购订单或采购申请占用数据
|
|
|
+ var poOccupys = _srm_po_occupy.GetListAsync(x => occoupyRefId.Contains(x.polist_id) && x.bang_id == bangid && !x.IsDeleted).Result;
|
|
|
#endregion
|
|
|
|
|
|
//处理一下已经插入得占用记录
|
|
|
@@ -3234,7 +3268,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//物料库存
|
|
|
stocklist.AddRange(_ic_item_stock.GetListAsync(p => p.factory_id == param.factoryId && p.bang_id == bangid && itemIds.Contains(p.icitem_id)).Result);
|
|
|
//物料库存占用表
|
|
|
- sklist.AddRange(_ic_item_stockoccupy.GetListAsync(x => x.bang_id == bangid && !x.IsDeleted).Result);
|
|
|
+ sklist.AddRange(_ic_item_stockoccupy.GetListAsync(x => x.bang_id == bangid && !x.IsDeleted && itemIds.Contains(x.icitem_id)).Result);
|
|
|
|
|
|
//物料提前期
|
|
|
leadTimeList = GetLeadTime(icitemlist, param.company_id, param.factoryId);//提前期列表
|
|
|
@@ -3257,7 +3291,7 @@ namespace Business.ResourceExamineManagement
|
|
|
_CalcBomViewAppService.srm_Po_Lists = poDetailList; //采购明细
|
|
|
_CalcBomViewAppService.srm_Po_Occupies = poOccupys; //采购占用表
|
|
|
_CalcBomViewAppService.ic_item_List = icitemlist; //物料表
|
|
|
- _CalcBomViewAppService.srm_Pr_Mains = srm_pr_mains;//PR
|
|
|
+ _CalcBomViewAppService.srm_Pr_Mains = srm_pr_mains.Where(s=>s.state != 4).ToList();//PR
|
|
|
DateTime dt = DateTime.Now;
|
|
|
_CalcBomViewAppService.quarter_starttime = dt.AddMonths(0 - (dt.Month - 1) % 3).AddDays(1 - dt.Day).Date;
|
|
|
_CalcBomViewAppService.quarter_endtime = _CalcBomViewAppService.quarter_starttime.AddMonths(3);
|