|
|
@@ -1040,7 +1040,7 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
//物料、供应商为相同才允许合并。
|
|
|
var idList = AnalysisIdList(ids);
|
|
|
- List<srm_pr_main> prlist = _mysql_srm_pr_main.GetListAsync(s => idList.Contains(s.Id)).Result;
|
|
|
+ List<srm_pr_main> prlist = _mysql_srm_pr_main.GetListAsync(s => idList.Contains(s.Id) && s.IsRequireGoods == 1).Result;
|
|
|
if (prlist.Any())
|
|
|
{
|
|
|
if (prlist.Where(s => s.state == 0).Count() > 0)
|
|
|
@@ -1142,7 +1142,8 @@ namespace Business.ResourceExamineManagement
|
|
|
DateTime toTime = DateTime.Now; //new DateTime(2023, 7, 6);
|
|
|
DateTime starttime = toTime.Date.AddDays(1);
|
|
|
DateTime endtime = toTime.Date.AddDays(7);
|
|
|
- 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<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.IsRequireGoods == 1).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;
|
|
|
@@ -1152,6 +1153,7 @@ namespace Business.ResourceExamineManagement
|
|
|
List<srm_pr_main> insetPrList = new List<srm_pr_main>();
|
|
|
List<srm_pr_main> updatePrList = new List<srm_pr_main>();
|
|
|
var moPrlist = ObjectMapper.Map<List<srm_pr_main>, List<mo_srm_pr_main>>(prlist);
|
|
|
+ long Nbr = help.NextId();
|
|
|
foreach (var pr in prlist)
|
|
|
{
|
|
|
bool bl = pr.sentry_id == null;//区分是销售订单和非销售订单的合并。
|
|
|
@@ -1172,7 +1174,7 @@ namespace Business.ResourceExamineManagement
|
|
|
prRefoccupy.ForEach(a => {
|
|
|
a.polist_id = newPr.Id;
|
|
|
});
|
|
|
- newPr.pr_billno = pr.pr_type == 2 ? _CalcBomViewAppService.getOrderNum("WWPR") : _CalcBomViewAppService.getOrderNum("PR");//pr单号
|
|
|
+ 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);//申请数量
|
|
|
@@ -1190,6 +1192,7 @@ namespace Business.ResourceExamineManagement
|
|
|
insetPrList.Add(newPr);
|
|
|
ilist.ForEach(s => { s.state = 0; });
|
|
|
updatePrList.AddRange(ilist);
|
|
|
+ Nbr++;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -1223,57 +1226,6 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- #region 此逻辑是处理按每周几送货实现,先屏蔽
|
|
|
- /*foreach (var pr in moPrlist)
|
|
|
- {
|
|
|
- var pur = purchaselist.Find(s => s.icitem_id == pr.icitem_id && s.supplier_id == pr.pr_purchaseid);
|
|
|
- if (pur != null)
|
|
|
- {
|
|
|
- if (pur.is_week)
|
|
|
- {
|
|
|
- var prDtos = prWeekDtos.Where(s => s.icitem_id == pr.icitem_id && s.pr_purchaseid == pr.pr_purchaseid).ToList();
|
|
|
- if (!prDtos.Any())
|
|
|
- {
|
|
|
- prDtos = AnalysisIntervalData(pur.is_days, pr);
|
|
|
- prWeekDtos.AddRange(prDtos);
|
|
|
- }
|
|
|
-
|
|
|
- //判断当前PR属于哪个区间
|
|
|
- if (prDtos.Any())
|
|
|
- {
|
|
|
- foreach (var dto in prDtos)
|
|
|
- {
|
|
|
- int wk = (int)pr.pr_rarrive_date.GetValueOrDefault().DayOfWeek;
|
|
|
- wk = wk == 0 ? 7 : wk;
|
|
|
- if (dto.weekList.Contains(wk))
|
|
|
- {
|
|
|
- if (wk >= dto.week)
|
|
|
- {
|
|
|
- pr.pr_rarrive_date = pr.pr_rarrive_date.GetValueOrDefault().Date.AddDays(dto.week - wk);
|
|
|
- }
|
|
|
- else {
|
|
|
- //wk 2 week 5
|
|
|
- pr.pr_rarrive_date = pr.pr_rarrive_date.GetValueOrDefault().Date.AddDays(0 - wk - (7 - dto.week));
|
|
|
- }
|
|
|
-
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- //如果没有则还是需要处理
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //如果此物料没有设置周期送货,则所有数据合并为一个PR,转成一个PO
|
|
|
- }
|
|
|
- }
|
|
|
- }*/
|
|
|
- #endregion
|
|
|
-
|
|
|
using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
|
|
|
{
|
|
|
try
|
|
|
@@ -1725,7 +1677,7 @@ namespace Business.ResourceExamineManagement
|
|
|
prapplyList.ForEach(p =>
|
|
|
{
|
|
|
seqSql += "insert QadTracking(Ufld1,Domain,SeqID,TransType,Subject,[Order],Int1,CreateTime,CreateUser,UpdateTime,UpdateUser) values('C','" + p.factory_id.ToString() +
|
|
|
- "'," + seqId.ToString() + ",'nbr-pr-mes','请购单','" + p.pr_billno + "'," + p.Id.ToString() + ",getdate(),'',getdate(),'');";
|
|
|
+ "'," + seqId.ToString() + ",'nbr-pr-mes','请购单','" + p.pr_billno + "'," + p.mysql_id.ToString() + ",getdate(),'',getdate(),'');";
|
|
|
seqId++;
|
|
|
});
|
|
|
}
|
|
|
@@ -2261,7 +2213,7 @@ namespace Business.ResourceExamineManagement
|
|
|
poDto.polist = new List<srm_po_list>();
|
|
|
pOGroupDtos.Add(poDto);
|
|
|
}
|
|
|
- item.state = 0;
|
|
|
+ item.state = 4;
|
|
|
srm_po_list podetail = new srm_po_list();
|
|
|
podetail.GenerateNewId(help.NextId());
|
|
|
podetail.pr_id = item.Id;
|
|
|
@@ -3369,24 +3321,29 @@ namespace Business.ResourceExamineManagement
|
|
|
GetWorkDetalis(childs.Where(s => s.parent_id == child.fid).ToList(), returnList, childs);
|
|
|
if (returnList.Any())
|
|
|
{
|
|
|
- foreach (var structure in returnList)
|
|
|
+ WorkOrdDetail woDetail = null;
|
|
|
+ var calereturnList = returnList.Select(x => x.item_number).Distinct().ToList();
|
|
|
+ foreach (var caleNumber in calereturnList)
|
|
|
{
|
|
|
- var psm = productStructureMs.Find(x => x.ParentItem == workord.ItemNum && x.ComponentItem == structure.item_number);
|
|
|
- WorkOrdDetail woDetail = new WorkOrdDetail();
|
|
|
+ var caleList = returnList.Where(x => x.item_number == caleNumber).ToList();
|
|
|
+
|
|
|
+ //添加工单的物料信息
|
|
|
woDetail = new WorkOrdDetail();
|
|
|
- woDetail.Domain = param.factoryId.ToString();
|
|
|
+ woDetail.Domain = workord.Domain;
|
|
|
woDetail.WorkOrd = workord.WorkOrd;
|
|
|
- woDetail.Op = structure.Op;
|
|
|
- woDetail.ItemNum = structure.item_number;
|
|
|
- woDetail.QtyRequired = structure.needCount;
|
|
|
+ woDetail.Op = caleList.Max(f => f.Op);
|
|
|
+ woDetail.ItemNum = caleNumber;
|
|
|
woDetail.QtyPosted = 0m;
|
|
|
woDetail.QtyReturned = 0m;
|
|
|
- woDetail.FrozenBOMQty = structure.qty;
|
|
|
woDetail.Status = "";
|
|
|
woDetail.IsActive = true;
|
|
|
woDetail.CreateTime = DateTime.Now;
|
|
|
+ woDetail.QtyRequired = caleList.Sum(c => c.needCount);
|
|
|
woDetail.WorkOrdMasterRecID = workord.RecID;
|
|
|
- woDetail.Yield = psm == null ? 0 : psm.Scrap;
|
|
|
+ if (workord.QtyOrded != 0)
|
|
|
+ {
|
|
|
+ woDetail.FrozenBOMQty = Math.Round(woDetail.QtyRequired / workord.QtyOrded, 10);
|
|
|
+ }
|
|
|
workOrdDetails.Add(woDetail);
|
|
|
}
|
|
|
}
|
|
|
@@ -3449,7 +3406,7 @@ namespace Business.ResourceExamineManagement
|
|
|
prapplyList.ForEach(p =>
|
|
|
{
|
|
|
seqSql += "insert QadTracking(Ufld1,Domain,SeqID,TransType,Subject,[Order],Int1,CreateTime,CreateUser,UpdateTime,UpdateUser) values('C','" + p.factory_id.ToString() +
|
|
|
- "'," + seqId.ToString() + ",'nbr-pr-mes','请购单','" + p.pr_billno + "'," + p.Id.ToString() + ",getdate(),'',getdate(),'');";
|
|
|
+ "'," + seqId.ToString() + ",'nbr-pr-mes','请购单','" + p.pr_billno + "'," + p.mysql_id.ToString() + ",getdate(),'',getdate(),'');";
|
|
|
seqId++;
|
|
|
});
|
|
|
}
|
|
|
@@ -3567,16 +3524,14 @@ namespace Business.ResourceExamineManagement
|
|
|
|
|
|
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 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.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;
|
|
|
+ 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.state != 4 && !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
|
|
|
|
|
|
- //处理一下已经插入得占用记录
|
|
|
-
|
|
|
//物料库存
|
|
|
stocklist.AddRange(_ic_item_stock.GetListAsync(p => p.factory_id == param.factoryId && p.bang_id == bangid && itemIds.Contains(p.icitem_id)).Result);
|
|
|
//物料库存占用表
|
|
|
@@ -3607,7 +3562,7 @@ namespace Business.ResourceExamineManagement
|
|
|
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);
|
|
|
- _CalcBomViewAppService.quarter_srm_pr_mains = srm_pr_mains.Where(s => s.pr_psend_date >= _CalcBomViewAppService.quarter_starttime && s.pr_psend_date < _CalcBomViewAppService.quarter_endtime).ToList();//本季度PR
|
|
|
+ _CalcBomViewAppService.quarter_srm_pr_mains = _srm_pr_main.GetListAsync(s => s.state != 0 && s.pr_psend_date >= _CalcBomViewAppService.quarter_starttime && s.pr_psend_date < _CalcBomViewAppService.quarter_endtime).Result;//本季度PR
|
|
|
}
|
|
|
|
|
|
public void GenerateSort(List<BomChildExamineDto> returnlist)
|
|
|
@@ -4298,13 +4253,13 @@ namespace Business.ResourceExamineManagement
|
|
|
woDetail.Domain = item.factory_id.ToString();
|
|
|
woDetail.WorkOrd = item.morder_no;
|
|
|
woDetail.Op = caleList.Max(f => f.Op);
|
|
|
- woDetail.ItemNum =caleNumber;
|
|
|
+ woDetail.ItemNum = caleNumber;
|
|
|
woDetail.QtyPosted = 0m;
|
|
|
woDetail.QtyReturned = 0m;
|
|
|
woDetail.Status = "";
|
|
|
woDetail.IsActive = true;
|
|
|
woDetail.CreateTime = DateTime.Now;
|
|
|
- woDetail.QtyRequired= caleList.Sum(c => c.needCount.GetValueOrDefault());
|
|
|
+ woDetail.QtyRequired = caleList.Sum(c => c.needCount.GetValueOrDefault());
|
|
|
if (workOrd.QtyOrded != 0)
|
|
|
{
|
|
|
woDetail.FrozenBOMQty = Math.Round(woDetail.QtyRequired / workOrd.QtyOrded, 10);
|