|
|
@@ -1336,10 +1336,10 @@ namespace Business.ResourceExamineManagement
|
|
|
//按要求推送四周数据
|
|
|
DateTime toTime = DateTime.Now;
|
|
|
DateTime starttime = toTime.Date.AddDays(1);
|
|
|
- //DateTime endtime = toTime.Date.AddDays(28);
|
|
|
+ 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;
|
|
|
- List<srm_pr_main> prapplyList = _mysql_srm_pr_main.GetListAsync(s => s.company_id.ToString() == companyid && s.pr_ssend_date <= starttime && s.state == 1 && s.IsRequireGoods == 0).Result;
|
|
|
+ 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;
|
|
|
+ //List<srm_pr_main> prapplyList = _mysql_srm_pr_main.GetListAsync(s => s.company_id.ToString() == companyid && s.pr_ssend_date <= starttime && s.state == 1 && s.IsRequireGoods == 0).Result;
|
|
|
string seqSql = "";
|
|
|
if (prapplyList.Any())
|
|
|
{
|
|
|
@@ -3455,63 +3455,8 @@ namespace Business.ResourceExamineManagement
|
|
|
examines.Add(dtl);
|
|
|
}
|
|
|
rtn.examines = examines;
|
|
|
- List<WorkOrdDetail> workOrdDetails = new List<WorkOrdDetail>();
|
|
|
- //成品虚拟件对应关系
|
|
|
- var productOpList = _productStructureOp.Select(x => workOrds.Select(c => c.ItemNum).Contains(x.ProductItem) && x.Domain == param.factoryId.ToString());
|
|
|
- foreach (var workord in workOrds)
|
|
|
- {
|
|
|
- var exm = examines.Find(s => s.morder_no == workord.WorkOrd);
|
|
|
- if (exm != null)
|
|
|
- {
|
|
|
- var childs = exm.BomChildExamineList.Where(s => s.is_use == true).ToList();
|
|
|
-
|
|
|
- var child = childs.Find(s => s.item_number == workord.ItemNum);
|
|
|
- if (child == null)
|
|
|
- {
|
|
|
- continue;
|
|
|
- }
|
|
|
- List<BomChildExamineDto> returnList = new List<BomChildExamineDto>();
|
|
|
- var productOps = productOpList.Where(x => x.ProductItem == workord.ItemNum).ToList();
|
|
|
- GetWorkDetalis(childs.Where(s => s.parent_id == child.fid).ToList(), returnList, childs, productOps);
|
|
|
- if (returnList.Any())
|
|
|
- {
|
|
|
- WorkOrdDetail woDetail = null;
|
|
|
- var calereturnList = returnList.OrderBy(c => c.item_number).Select(x => x.item_number).Distinct().ToList();
|
|
|
- short num = 1;
|
|
|
- foreach (var caleNumber in calereturnList)
|
|
|
- {
|
|
|
- var caleList = returnList.Where(x => x.item_number == caleNumber).ToList();
|
|
|
-
|
|
|
- //添加工单的物料信息
|
|
|
- woDetail = new WorkOrdDetail();
|
|
|
- woDetail.Domain = workord.Domain;
|
|
|
- woDetail.WorkOrd = workord.WorkOrd;
|
|
|
- var oplist = caleList.Where(x => x.Op > 0).ToList();
|
|
|
- woDetail.Op = 0;
|
|
|
- if (oplist.Any())
|
|
|
- {
|
|
|
- woDetail.Op = oplist.Min(f => f.Op);
|
|
|
- }
|
|
|
- woDetail.ItemNum = caleNumber;
|
|
|
- woDetail.QtyPosted = 0m;
|
|
|
- woDetail.QtyReturned = 0m;
|
|
|
- woDetail.Status = "";
|
|
|
- woDetail.IsActive = true;
|
|
|
- woDetail.CreateTime = DateTime.Now;
|
|
|
- woDetail.Line = num;
|
|
|
- woDetail.QtyRequired = caleList.Sum(c => c.needCount);
|
|
|
- woDetail.WorkOrdMasterRecID = workord.RecID;
|
|
|
- if (workord.QtyOrded != 0)
|
|
|
- {
|
|
|
- woDetail.FrozenBOMQty = Math.Round(woDetail.QtyRequired / workord.QtyOrded, 10);
|
|
|
- }
|
|
|
- workOrdDetails.Add(woDetail);
|
|
|
- num++;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
+
|
|
|
if (planCheck)
|
|
|
{
|
|
|
//如果有计划工单,则需要生成pr po oo
|
|
|
@@ -3557,7 +3502,100 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ if (_CalcBomViewAppService.mordersInsertList.Any())
|
|
|
+ {
|
|
|
+ var molist = ObjectMapper.Map<List<mo_mes_morder>, List<mes_morder>>(_CalcBomViewAppService.mordersInsertList);
|
|
|
+ _businessDbContext.BulkInsert(molist);
|
|
|
+
|
|
|
+ List<WorkOrdMaster> workOrdSave = new List<WorkOrdMaster>();
|
|
|
+ List<WorkOrdRouting> workOrdRoutingSave = new List<WorkOrdRouting>();
|
|
|
+ List<WorkOrdDetail> workOrdDetails = new List<WorkOrdDetail>();
|
|
|
+ if (molist.Any())
|
|
|
+ {
|
|
|
+ molist.ForEach(s => { s.create_time = DateTime.Now; s.factory_id = param.factoryId; s.company_id = param.company_id; });
|
|
|
+ //同步工单
|
|
|
+ CreateWorkOrdDates(molist, _CalcBomViewAppService.moentriesInsertList, routingOps, workOrdSave, workOrdRoutingSave, workOrdDetails, new List<b_examine_result>(), new List<b_bom_child_examine>());
|
|
|
+ if (workOrdSave.Any())
|
|
|
+ {
|
|
|
+ _businessDbContext.BulkInsert(workOrdSave);
|
|
|
+ }
|
|
|
+ var DBworkOrdList = _workOrdMaster.Select(a => workOrdSave.Count > 0 && a.Domain == workOrdSave[0].Domain && workOrdSave.Select(c => c.WorkOrd).Contains(a.WorkOrd));
|
|
|
+ if (workOrdRoutingSave.Any())
|
|
|
+ {
|
|
|
+ workOrds.AddRange(DBworkOrdList);
|
|
|
+ workOrdRoutingSave.ForEach(c =>
|
|
|
+ {
|
|
|
+ c.WorkOrdMasterRecID = DBworkOrdList.Where(a => a.WorkOrd == c.WorkOrd).First().RecID;
|
|
|
+ });
|
|
|
+ _businessDbContext.BulkInsert(workOrdRoutingSave);
|
|
|
+ }
|
|
|
+ priorityMorderList.AddRange(molist);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ List<WorkOrdDetail> mainWorkOrdDetails = new List<WorkOrdDetail>();
|
|
|
+ //成品虚拟件对应关系
|
|
|
+ var productOpList = _productStructureOp.Select(x => priorityMorderList.Select(c => c.product_code).Contains(x.ProductItem) && x.Domain == param.factoryId.ToString());
|
|
|
+ foreach (var workord in priorityMorderList)
|
|
|
+ {
|
|
|
+ long fid = GetParentMo(priorityMorderList, workord);
|
|
|
+ var exm = examines.Find(s => s.morder_id == fid);
|
|
|
+ //var exm = examines.Find(s => s.morder_no == workord.morder_no);
|
|
|
+ if (exm != null)
|
|
|
+ {
|
|
|
+ var childs = exm.BomChildExamineList.Where(s => s.is_use == true).ToList();
|
|
|
+
|
|
|
+ var child = childs.Find(s => s.item_number == workord.product_code);
|
|
|
+ if (child == null)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ List<BomChildExamineDto> returnList = new List<BomChildExamineDto>();
|
|
|
+ var productOps = productOpList.Where(x => x.ProductItem == workord.product_code).ToList();
|
|
|
+ GetWorkDetalis(childs.Where(s => s.parent_id == child.fid).ToList(), returnList, childs, productOps);
|
|
|
+ if (returnList.Any())
|
|
|
+ {
|
|
|
+ WorkOrdDetail woDetail = null;
|
|
|
+ var calereturnList = returnList.OrderBy(c => c.item_number).Select(x => x.item_number).Distinct().ToList();
|
|
|
+ var work = workOrds.Find(x => x.WorkOrd == workord.morder_no);
|
|
|
+ if (work == null)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ short num = 1;
|
|
|
+ foreach (var caleNumber in calereturnList)
|
|
|
+ {
|
|
|
+ var caleList = returnList.Where(x => x.item_number == caleNumber).ToList();
|
|
|
+
|
|
|
+ //添加工单的物料信息
|
|
|
+ woDetail = new WorkOrdDetail();
|
|
|
+ woDetail.Domain = workord.factory_id.ToString();
|
|
|
+ woDetail.WorkOrd = workord.morder_no;
|
|
|
+ var oplist = caleList.Where(x => x.Op > 0).ToList();
|
|
|
+ woDetail.Op = 0;
|
|
|
+ if (oplist.Any())
|
|
|
+ {
|
|
|
+ woDetail.Op = oplist.Min(f => f.Op);
|
|
|
+ }
|
|
|
+ woDetail.ItemNum = caleNumber;
|
|
|
+ woDetail.QtyPosted = 0m;
|
|
|
+ woDetail.QtyReturned = 0m;
|
|
|
+ woDetail.Status = "";
|
|
|
+ woDetail.IsActive = true;
|
|
|
+ woDetail.CreateTime = DateTime.Now;
|
|
|
+ woDetail.Line = num;
|
|
|
+ woDetail.QtyRequired = caleList.Sum(c => c.needCount);
|
|
|
+ woDetail.WorkOrdMasterRecID = work.RecID;
|
|
|
+ if (workord.need_number != 0)
|
|
|
+ {
|
|
|
+ woDetail.FrozenBOMQty = Math.Round(woDetail.QtyRequired / workord.need_number.GetValueOrDefault(), 10);
|
|
|
+ }
|
|
|
+ mainWorkOrdDetails.Add(woDetail);
|
|
|
+ num++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
//获取工单数据
|
|
|
/*var workOrdMasters = _workOrdMaster.Select(p => mo_Mes_Morders.Select(c => c.morder_no).Contains(p.WorkOrd) && p.Domain == param.factoryId.ToString());
|
|
|
workOrdMasters.ForEach(s => {
|
|
|
@@ -3599,9 +3637,9 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
|
_businessDbContext.BulkDelete(delWorkOrddetails);
|
|
|
}
|
|
|
- if (workOrdDetails.Any())
|
|
|
+ if (mainWorkOrdDetails.Any())
|
|
|
{
|
|
|
- _businessDbContext.BulkInsert(workOrdDetails);
|
|
|
+ _businessDbContext.BulkInsert(mainWorkOrdDetails);
|
|
|
}
|
|
|
await unitOfWork.CompleteAsync();
|
|
|
}
|