|
@@ -3089,7 +3089,32 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
{
|
|
|
return "工单信息为"+ morders[0].morder_state + ",不允许下达。";
|
|
return "工单信息为"+ morders[0].morder_state + ",不允许下达。";
|
|
|
}
|
|
}
|
|
|
- var rst = await OrderResourceCheck(morders, domain, userAccount);
|
|
|
|
|
|
|
+ try
|
|
|
|
|
+ {
|
|
|
|
|
+ //如果生成领料单,需清理掉当前工单的占用,然后根据领料单的数据,来生成工单的占用
|
|
|
|
|
+ var pickRst = await CreatePickBill(morders[0].morder_no, domain, userAccount);
|
|
|
|
|
+ if (pickRst != "ok")
|
|
|
|
|
+ {
|
|
|
|
|
+ new NLogHelper("ResourceExamineAppService").WriteLog("CreatePickBill", "生成领料单相关数据更新失败:" + pickRst, _currentTenant.Id.ToString());
|
|
|
|
|
+ return pickRst;
|
|
|
|
|
+ }
|
|
|
|
|
+ morders[0].morder_state = MorderEnum.Xd_state;
|
|
|
|
|
+ morders[0].MaterialSituation = morders[0].MaterialSituation == MorderEnum.NoCarehouseComplete ? MorderEnum.Part : morders[0].MaterialSituation;
|
|
|
|
|
+ //await _mysql_mes_morder.UpdateManyAsync(morders);
|
|
|
|
|
+ await _businessDbContext.BulkUpdateAsync(morders);
|
|
|
|
|
+ //复制子工序
|
|
|
|
|
+ var insertList = GetCopyOP(morders[0].morder_no, domain);
|
|
|
|
|
+ if (insertList.Any())
|
|
|
|
|
+ {
|
|
|
|
|
+ _periodSequenceDet.Insert(insertList);
|
|
|
|
|
+ }
|
|
|
|
|
+ return "ok";
|
|
|
|
|
+ }
|
|
|
|
|
+ catch (Exception e)
|
|
|
|
|
+ {
|
|
|
|
|
+ return "下达失败,请联系管理员。";
|
|
|
|
|
+ }
|
|
|
|
|
+ /*var rst = await OrderResourceCheck(morders, domain, userAccount);
|
|
|
if (rst == "ok")
|
|
if (rst == "ok")
|
|
|
{
|
|
{
|
|
|
try
|
|
try
|
|
@@ -3121,7 +3146,7 @@ namespace Business.ResourceExamineManagement
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
return rst;
|
|
return rst;
|
|
|
- }
|
|
|
|
|
|
|
+ }*/
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
return "工单信息不存在,请重新检查。";
|
|
return "工单信息不存在,请重新检查。";
|
|
@@ -3406,7 +3431,7 @@ namespace Business.ResourceExamineManagement
|
|
|
var workOrds = _replenishmentAppService.CalcPriority(mo_Mes_Morders.Select(p => p.morder_no).ToList(), param.factoryId.ToString());
|
|
var workOrds = _replenishmentAppService.CalcPriority(mo_Mes_Morders.Select(p => p.morder_no).ToList(), param.factoryId.ToString());
|
|
|
//var recid = workOrds.Select(c => c.RecID).ToList();
|
|
//var recid = workOrds.Select(c => c.RecID).ToList();
|
|
|
//清理工单物料明细
|
|
//清理工单物料明细
|
|
|
- //var delWorkOrddetails = _workOrdDetail.Select(x => workOrds.Select(c => c.RecID).Contains((int)x.WorkOrdMasterRecID) && x.Domain == param.factoryId.ToString());
|
|
|
|
|
|
|
+ var delWorkOrddetails = _workOrdDetail.Select(x => workOrds.Select(c => c.RecID).Contains((int)x.WorkOrdMasterRecID) && x.Domain == param.factoryId.ToString());
|
|
|
//var productStructureMs = _productStructureMaster.Select(x => workOrds.Select(c => c.WorkOrd).Contains(x.ParentItem) && x.Domain == param.factoryId.ToString());
|
|
//var productStructureMs = _productStructureMaster.Select(x => workOrds.Select(c => c.WorkOrd).Contains(x.ParentItem) && x.Domain == param.factoryId.ToString());
|
|
|
List<mes_morder> priorityMorderList = new List<mes_morder>();
|
|
List<mes_morder> priorityMorderList = new List<mes_morder>();
|
|
|
foreach (var work in workOrds)
|
|
foreach (var work in workOrds)
|
|
@@ -3505,7 +3530,81 @@ namespace Business.ResourceExamineManagement
|
|
|
examines.Add(dtl);
|
|
examines.Add(dtl);
|
|
|
}
|
|
}
|
|
|
rtn.examines = examines;
|
|
rtn.examines = examines;
|
|
|
-
|
|
|
|
|
|
|
+ List<WorkOrdDetail> mainWorkOrdDetails = new List<WorkOrdDetail>();
|
|
|
|
|
+ if (moentryList == null)
|
|
|
|
|
+ {
|
|
|
|
|
+ //暂时屏蔽重新生成工单物料明细
|
|
|
|
|
+
|
|
|
|
|
+ //成品虚拟件对应关系
|
|
|
|
|
+ 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);
|
|
|
|
|
+ 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++;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (delWorkOrddetails.Any())
|
|
|
|
|
+ {
|
|
|
|
|
+ _businessDbContext.BulkDelete(delWorkOrddetails);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (mainWorkOrdDetails.Any())
|
|
|
|
|
+ {
|
|
|
|
|
+ _businessDbContext.BulkInsert(mainWorkOrdDetails);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
if (planCheck)
|
|
if (planCheck)
|
|
|
{
|
|
{
|
|
@@ -3583,70 +3682,7 @@ namespace Business.ResourceExamineManagement
|
|
|
}
|
|
}
|
|
|
}*/
|
|
}*/
|
|
|
|
|
|
|
|
- //暂时屏蔽重新生成工单物料明细
|
|
|
|
|
- /*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());
|
|
/*var workOrdMasters = _workOrdMaster.Select(p => mo_Mes_Morders.Select(c => c.morder_no).Contains(p.WorkOrd) && p.Domain == param.factoryId.ToString());
|
|
|
workOrdMasters.ForEach(s => {
|
|
workOrdMasters.ForEach(s => {
|
|
@@ -3684,14 +3720,7 @@ namespace Business.ResourceExamineManagement
|
|
|
srmpooccupyInsert.ForEach(x => { x.GenerateNewId(help.NextId()); });
|
|
srmpooccupyInsert.ForEach(x => { x.GenerateNewId(help.NextId()); });
|
|
|
_businessDbContext.BulkInsert(srmpooccupyInsert);
|
|
_businessDbContext.BulkInsert(srmpooccupyInsert);
|
|
|
}
|
|
}
|
|
|
- /*if (delWorkOrddetails.Any())
|
|
|
|
|
- {
|
|
|
|
|
- _businessDbContext.BulkDelete(delWorkOrddetails);
|
|
|
|
|
- }
|
|
|
|
|
- if (mainWorkOrdDetails.Any())
|
|
|
|
|
- {
|
|
|
|
|
- _businessDbContext.BulkInsert(mainWorkOrdDetails);
|
|
|
|
|
- }*/
|
|
|
|
|
|
|
+
|
|
|
await unitOfWork.CompleteAsync();
|
|
await unitOfWork.CompleteAsync();
|
|
|
}
|
|
}
|
|
|
catch (Exception e)
|
|
catch (Exception e)
|