|
|
@@ -147,6 +147,11 @@ namespace Business.ResourceExamineManagement
|
|
|
/// </summary>
|
|
|
private ISqlRepository<NbrMaster> _nbrMaster;
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 领料单明细
|
|
|
+ /// </summary>
|
|
|
+ private ISqlRepository<NbrDetail> _nbrDetail;
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 工单工序开始准备时间记录
|
|
|
/// </summary>
|
|
|
@@ -206,7 +211,8 @@ namespace Business.ResourceExamineManagement
|
|
|
ISqlRepository<ScheduleExceptionMaster> scheduleExceptionMaster,
|
|
|
ISqlRepository<NbrMaster> nbrMaster,
|
|
|
IRepository<mes_morder, long> mysql_mes_morder,
|
|
|
- ISqlRepository<WorkOrdSetupTimeRecord> workOrdSetupTimeRecord
|
|
|
+ ISqlRepository<WorkOrdSetupTimeRecord> workOrdSetupTimeRecord,
|
|
|
+ ISqlRepository<NbrDetail> nbrDetail
|
|
|
)
|
|
|
{
|
|
|
_itemMaster = itemMaster;
|
|
|
@@ -228,6 +234,7 @@ namespace Business.ResourceExamineManagement
|
|
|
_scheduleExceptionMaster = scheduleExceptionMaster;
|
|
|
_mysql_mes_morder = mysql_mes_morder;
|
|
|
_workOrdSetupTimeRecord = workOrdSetupTimeRecord;
|
|
|
+ _nbrDetail = nbrDetail;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
@@ -269,6 +276,8 @@ namespace Business.ResourceExamineManagement
|
|
|
scheTime = startTime;
|
|
|
//获取工单领料单
|
|
|
var nbrMasterList = _nbrMaster.Select(x => x.Domain == domain && x.Type.ToUpper() == "SM" && workOrds.Select(s => s.WorkOrd).Contains(x.WorkOrd)).ToList();
|
|
|
+ //获取领料单明细
|
|
|
+ var nbrDtlLists = _nbrDetail.Select(x => x.Domain == domain && nbrMasterList.Select(s => s.Nbr).Contains(x.Nbr)).ToList();
|
|
|
workOrds = workOrds.OrderBy(p => p.Priority).ToList();
|
|
|
//记录工单数据
|
|
|
List<WorkPriorityDto> dbWorkOrds = workOrds.Select(p => new WorkPriorityDto {
|
|
|
@@ -288,16 +297,53 @@ namespace Business.ResourceExamineManagement
|
|
|
ytc++;
|
|
|
continue;
|
|
|
}
|
|
|
- var curNbrs = nbrMasterList.Where(p => p.WorkOrd == workOrds[i].WorkOrd).ToList();
|
|
|
- //存在领料单:不需要前处理-领料单已关闭,需要前处理-状态为部分完成或者全部完成
|
|
|
- if (curNbrs.Any() && !curNbrs.Exists(p => (p.TransType != "PrevProcess" && p.Status.ToUpper() != "C") || (p.TransType == "PrevProcess" && p.PretreatmentState != "completed" && p.PretreatmentState != "50")))
|
|
|
+ //需要前处理的领料单
|
|
|
+ var qclNbr = nbrMasterList.FirstOrDefault(p => p.WorkOrd == workOrds[i].WorkOrd && p.TransType == "PrevProcess");
|
|
|
+ //不需要前处理的领料单
|
|
|
+ var bqclNbr = nbrMasterList.FirstOrDefault(p => p.WorkOrd == workOrds[i].WorkOrd && p.TransType != "PrevProcess");
|
|
|
+ List<NbrDetail> bqclNbrDtls = new List<NbrDetail>();
|
|
|
+ if (bqclNbr!= null)
|
|
|
+ {
|
|
|
+ bqclNbrDtls = nbrDtlLists.Where(p => p.Nbr == bqclNbr.Nbr).ToList();
|
|
|
+ }
|
|
|
+ //存在领料单:不需要前处理-领料单明细存在已关闭物料,需要前处理-状态为部分完成或者全部完成
|
|
|
+ if (qclNbr != null && bqclNbr != null)
|
|
|
+ {
|
|
|
+ if ((qclNbr.PretreatmentState == "50" || qclNbr.PretreatmentState == "completed") && bqclNbrDtls.Exists(p=>p.Status.ToUpper() == "C"))
|
|
|
+ {
|
|
|
+ workOrds[i].Priority = ktc;
|
|
|
+ ktc++;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ workOrds[i].Priority = bktc;
|
|
|
+ bktc++;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (qclNbr != null && bqclNbr == null)
|
|
|
{
|
|
|
- workOrds[i].Priority = ktc;
|
|
|
- ktc++;
|
|
|
+ if (qclNbr.PretreatmentState == "50" || qclNbr.PretreatmentState == "completed")
|
|
|
+ {
|
|
|
+ workOrds[i].Priority = ktc;
|
|
|
+ ktc++;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ workOrds[i].Priority = bktc;
|
|
|
+ bktc++;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (qclNbr == null && bqclNbr != null)
|
|
|
+ {
|
|
|
+ if (bqclNbrDtls.Exists(p => p.Status.ToUpper() == "C"))
|
|
|
+ {
|
|
|
+ workOrds[i].Priority = ktc;
|
|
|
+ ktc++;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ workOrds[i].Priority = bktc;
|
|
|
+ bktc++;
|
|
|
continue;
|
|
|
}
|
|
|
- //不存在领料单或者领料单未关闭或者前处理状态不为部分完成/全部完成
|
|
|
- if (!curNbrs.Any() || curNbrs.Exists(p => (p.TransType != "PrevProcess" && p.Status.ToUpper() != "C") || (p.TransType == "PrevProcess" && p.PretreatmentState != "completed" && p.PretreatmentState != "50")))
|
|
|
+ if (qclNbr == null && bqclNbr == null)
|
|
|
{
|
|
|
workOrds[i].Priority = bktc;
|
|
|
bktc++;
|