|
|
@@ -2531,12 +2531,8 @@ namespace Business.ResourceExamineManagement
|
|
|
AutoCreateBomBill();
|
|
|
}
|
|
|
|
|
|
- public async Task AutoCreatePickBill(List<string> workOrds)
|
|
|
+ public async Task AutoCreatePickBill(List<string> workOrds, List<PeriodSequenceDet> dbPeriodSequences, List<NbrMaster> nbrMasterList, List<NbrDetail> nbrDetailList)
|
|
|
{
|
|
|
- //获取生产周期数据
|
|
|
- List<PeriodSequenceDet> dbPeriodSequences = _periodSequenceDet.Select(p => workOrds.Contains(p.WorkOrds) && p.Domain == "1001" && p.IsActive);
|
|
|
- List<NbrMaster> nbrMasterList = new List<NbrMaster>();//需要生成领料单列表
|
|
|
- List<NbrDetail> nbrDetailList = new List<NbrDetail>();//需要生成领料单明细列表
|
|
|
if (dbPeriodSequences.Any())
|
|
|
{
|
|
|
//按照工单领料,一个工单一个领料单,之前是按照排产日期和产线分别领料
|
|
|
@@ -2661,15 +2657,6 @@ namespace Business.ResourceExamineManagement
|
|
|
});
|
|
|
_locationDetail.Update(locStock);
|
|
|
}
|
|
|
- _nbrMaster.Insert(nbrMasterList);
|
|
|
- //快开平台用自增列RecId关联,所以需要插入后再查给明细表赋相应的值
|
|
|
- List<string> nbrs = nbrMasterList.Select(a => a.Nbr).ToList();
|
|
|
- var nbrList = _nbrMaster.Select(a => a.Domain == "1001" && a.Type == "SM" && nbrs.Contains(a.Nbr));
|
|
|
- nbrDetailList.ForEach(c =>
|
|
|
- {
|
|
|
- c.NbrRecID = nbrList.Where(a => a.Nbr == c.Nbr).First().RecID;
|
|
|
- });
|
|
|
- _nbrDetail.Insert(nbrDetailList);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -2844,7 +2831,9 @@ namespace Business.ResourceExamineManagement
|
|
|
return "没有需要下达的工单。";
|
|
|
}
|
|
|
//获取已排产的工单
|
|
|
- List<string> dbWorkOrds = _periodSequenceDet.Select(p => workOrds.Contains(p.WorkOrds)).Select(p => p.WorkOrds).Distinct().ToList();
|
|
|
+ List<PeriodSequenceDet> dbPeriodSequences = _periodSequenceDet.Select(p => workOrds.Contains(p.WorkOrds) && p.Domain == "1001" && p.IsActive);
|
|
|
+ List<string> dbWorkOrds = dbPeriodSequences.Select(p => p.WorkOrds).Distinct().ToList();
|
|
|
+
|
|
|
//查出已排产的工单
|
|
|
workOrdMasters = workOrdMasters.Where(p => dbWorkOrds.Contains(p.WorkOrd)).ToList();
|
|
|
//查出已产生领料单、过滤掉,取出未领料的工单
|
|
|
@@ -2855,9 +2844,46 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
return "当前选择的工单已领料或未排产。";
|
|
|
}
|
|
|
- await AutoCreatePickBill(workOrdMasters.Select(p => p.WorkOrd).ToList());
|
|
|
- workOrdMasters.ForEach(p => { p.Status = "r"; });
|
|
|
- _workOrdMaster.Update(workOrdMasters);
|
|
|
+ List<NbrMaster> nbrMasterList = new List<NbrMaster>();//需要生成领料单列表
|
|
|
+ List<NbrDetail> nbrDetailList = new List<NbrDetail>();//需要生成领料单明细列表
|
|
|
+
|
|
|
+ var ords = workOrdMasters.Select(p => p.WorkOrd).ToList();
|
|
|
+
|
|
|
+ dbPeriodSequences = dbPeriodSequences.Where(p => ords.Contains(p.WorkOrds)).ToList();
|
|
|
+ await AutoCreatePickBill(ords, dbPeriodSequences, nbrMasterList, nbrDetailList);
|
|
|
+ if (nbrMasterList.Any())
|
|
|
+ {
|
|
|
+ dbPeriodSequences.ForEach(p => { p.Status = "r"; });
|
|
|
+ workOrdMasters.ForEach(p => { p.Status = "r"; });
|
|
|
+ //获取工单工艺路径数据
|
|
|
+ List<WorkOrdRouting> workOrdRoutings = _workOrdRouting.Select(p => ords.Contains(p.WorkOrd) && p.MilestoneOp && p.Domain == "1001" && p.Status != "C" && p.IsActive);
|
|
|
+ workOrdRoutings.ForEach(p => { p.Status = "r"; });
|
|
|
+ using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ _nbrMaster.Insert(nbrMasterList);
|
|
|
+ //快开平台用自增列RecId关联,所以需要插入后再查给明细表赋相应的值
|
|
|
+ List<string> nbrs = nbrMasterList.Select(a => a.Nbr).ToList();
|
|
|
+ var DBnbrList = _nbrMaster.Select(a => a.Domain == "1001" && a.Type == "SM" && nbrs.Contains(a.Nbr));
|
|
|
+ nbrDetailList.ForEach(c =>
|
|
|
+ {
|
|
|
+ c.NbrRecID = DBnbrList.Where(a => a.Nbr == c.Nbr).First().RecID;
|
|
|
+ });
|
|
|
+ _nbrDetail.Insert(nbrDetailList);
|
|
|
+ _workOrdMaster.Update(workOrdMasters);
|
|
|
+ _periodSequenceDet.Update(dbPeriodSequences);
|
|
|
+ _workOrdRouting.Update(workOrdRoutings);
|
|
|
+ await unitOfWork.CompleteAsync();
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ unitOfWork.Dispose();
|
|
|
+ new NLogHelper("ResourceExamineAppService").WriteLog("CreatePickBill", "生成领料单相关数据更新失败:" + e.Message, _currentTenant.Id.ToString());
|
|
|
+ return e.Message;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
return "";
|
|
|
}
|
|
|
|
|
|
@@ -2893,6 +2919,7 @@ namespace Business.ResourceExamineManagement
|
|
|
workOrd.IsActive = true;
|
|
|
workOrd.IsConfirm = true;
|
|
|
workOrd.CreateTime = DateTime.Now;
|
|
|
+ workOrd.Batch = item.morder_no;
|
|
|
workOrds.Add(workOrd);
|
|
|
|
|
|
//添加工单工艺路线数据
|