|
@@ -416,10 +416,11 @@ namespace Business.ResourceExamineManagement
|
|
|
//更新当天日计划的计划数量,排产数量
|
|
//更新当天日计划的计划数量,排产数量
|
|
|
foreach (var item in periodSequenceDtls)
|
|
foreach (var item in periodSequenceDtls)
|
|
|
{
|
|
{
|
|
|
- item.UDeci5 = item.OrdQty;
|
|
|
|
|
|
|
+ //item.UDeci5 = item.OrdQty;
|
|
|
//获取历史排产数据
|
|
//获取历史排产数据
|
|
|
var curDtl = dbPeriodSequences.FirstOrDefault(p =>p.OrdQty > 0 && p.Op == item.Op && p.WorkOrds == item.WorkOrds && p.Line == item.Line && p.PlanDate == item.PlanDate && p.PlanDate == scheTime.Date);
|
|
var curDtl = dbPeriodSequences.FirstOrDefault(p =>p.OrdQty > 0 && p.Op == item.Op && p.WorkOrds == item.WorkOrds && p.Line == item.Line && p.PlanDate == item.PlanDate && p.PlanDate == scheTime.Date);
|
|
|
- item.OrdQty = curDtl == null ? item.OrdQty : curDtl.OrdQty;
|
|
|
|
|
|
|
+ //item.OrdQty = curDtl == null ? item.OrdQty : curDtl.OrdQty;
|
|
|
|
|
+ item.UDeci5 = curDtl == null ? item.OrdQty : curDtl.OrdQty;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
using (TransactionScope scope = new TransactionScope())
|
|
using (TransactionScope scope = new TransactionScope())
|
|
@@ -459,6 +460,9 @@ namespace Business.ResourceExamineManagement
|
|
|
//需要删除的日计划
|
|
//需要删除的日计划
|
|
|
List<PeriodSequenceDet> delSequenceDets = new List<PeriodSequenceDet>();
|
|
List<PeriodSequenceDet> delSequenceDets = new List<PeriodSequenceDet>();
|
|
|
List<ScheduleResultOpMaster> delScheduleResults = new List<ScheduleResultOpMaster>();
|
|
List<ScheduleResultOpMaster> delScheduleResults = new List<ScheduleResultOpMaster>();
|
|
|
|
|
+ //需要新增的日计划
|
|
|
|
|
+ List<PeriodSequenceDet> inSequenceDets = new List<PeriodSequenceDet>();
|
|
|
|
|
+ List<ScheduleResultOpMaster> inScheduleResults = new List<ScheduleResultOpMaster>();
|
|
|
PeriodSequenceDet seqInfo = new PeriodSequenceDet();
|
|
PeriodSequenceDet seqInfo = new PeriodSequenceDet();
|
|
|
ScheduleResultOpMaster schInfo = new ScheduleResultOpMaster();
|
|
ScheduleResultOpMaster schInfo = new ScheduleResultOpMaster();
|
|
|
foreach (var gdh in sczWorkords)
|
|
foreach (var gdh in sczWorkords)
|
|
@@ -487,6 +491,7 @@ namespace Business.ResourceExamineManagement
|
|
|
|
|
|
|
|
//获取提前投产的日计划
|
|
//获取提前投产的日计划
|
|
|
var opSchs = wlSchedules.Where(p => p.WorkOrd == gdh && p.Op == op && opSeqs.Select(m => m.PlanDate).Contains(p.WorkDate)).ToList();
|
|
var opSchs = wlSchedules.Where(p => p.WorkOrd == gdh && p.Op == op && opSeqs.Select(m => m.PlanDate).Contains(p.WorkDate)).ToList();
|
|
|
|
|
+ if (!opSchs.Any()) continue;
|
|
|
schInfo = opSchs[0];
|
|
schInfo = opSchs[0];
|
|
|
string strScheTime = scheTime.Date.ToString("yyyy-MM-dd");
|
|
string strScheTime = scheTime.Date.ToString("yyyy-MM-dd");
|
|
|
schInfo.WorkDate = scheTime.Date;
|
|
schInfo.WorkDate = scheTime.Date;
|
|
@@ -505,6 +510,31 @@ namespace Business.ResourceExamineManagement
|
|
|
upSequenceDets.Add(seqInfo);
|
|
upSequenceDets.Add(seqInfo);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ //今天未投产的计划清空
|
|
|
|
|
+ var delp = dtSequenceDets.Where(p => string.IsNullOrEmpty(p.Status) && p.WorkOrds==gdh).ToList();
|
|
|
|
|
+ if (delp.Any())
|
|
|
|
|
+ {
|
|
|
|
|
+ //删除今天的
|
|
|
|
|
+ delSequenceDets.AddRange(delp);
|
|
|
|
|
+ var delr = dtScheduleResults.Where(p => p.WorkOrd == gdh && delp.Select(d => d.Op).Contains(p.Op)).ToList();
|
|
|
|
|
+ delScheduleResults.AddRange(delr);
|
|
|
|
|
+ //同一个工序有下达记录则不进行新增
|
|
|
|
|
+ var pc= dtSequenceDets.Where(p => !string.IsNullOrEmpty(p.Status) && p.WorkOrds == gdh).ToList();
|
|
|
|
|
+ delp = delp.Where(d=> !pc.Select(p=>p.Op).Contains(d.Op)).ToList();
|
|
|
|
|
+ //新增今天的
|
|
|
|
|
+ inSequenceDets.AddRange(periodSequenceDtls.Where(p=>p.WorkOrds==gdh && p.PlanDate== scheTime.Date && delp.Select(d => d.Op).Contains(p.Op)));
|
|
|
|
|
+ inScheduleResults.AddRange(scheduleMasters.Where(p => p.WorkOrd == gdh && p.WorkDate == scheTime.Date && delp.Select(d => d.Op).Contains(p.Op)));
|
|
|
|
|
+ }
|
|
|
|
|
+ //无计划的今天的工序新增
|
|
|
|
|
+ var inss = dtScheduleResults.Where(p => p.WorkOrd == gdh).ToList();
|
|
|
|
|
+ var ins = periodSequenceDtls.Where(p => p.WorkOrds == gdh && p.PlanDate == scheTime.Date && !inss.Select(n=>n.Op).Contains(p.Op)).ToList();
|
|
|
|
|
+ if (ins.Any())
|
|
|
|
|
+ {
|
|
|
|
|
+ //新增今天的
|
|
|
|
|
+ inSequenceDets.AddRange(ins);
|
|
|
|
|
+ inScheduleResults.AddRange(scheduleMasters.Where(p => p.WorkOrd == gdh && p.WorkDate == scheTime.Date && ins.Select(d => d.Op).Contains(p.Op)));
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
//更新提前投产的日计划
|
|
//更新提前投产的日计划
|
|
|
if (upSequenceDets.Any())
|
|
if (upSequenceDets.Any())
|
|
@@ -524,14 +554,22 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
{
|
|
|
_scheduleResultOpMaster.Delete(delScheduleResults);
|
|
_scheduleResultOpMaster.Delete(delScheduleResults);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+ //新增当天的日计划
|
|
|
|
|
+ if (inSequenceDets.Any())
|
|
|
|
|
+ {
|
|
|
|
|
+ _periodSequenceDet.Insert(inSequenceDets);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (inScheduleResults.Any())
|
|
|
|
|
+ {
|
|
|
|
|
+ _scheduleResultOpMaster.Insert(inScheduleResults);
|
|
|
|
|
+ }
|
|
|
//删除当前日期下一天开始的工单排产记录
|
|
//删除当前日期下一天开始的工单排产记录
|
|
|
_periodSequenceDet.Delete(p => sczWorkords.Contains(p.WorkOrds) && p.PlanDate > scheTime.Date && p.Domain == domain);
|
|
_periodSequenceDet.Delete(p => sczWorkords.Contains(p.WorkOrds) && p.PlanDate > scheTime.Date && p.Domain == domain);
|
|
|
_scheduleResultOpMaster.Delete(p => sczWorkords.Contains(p.WorkOrd) && p.WorkDate > scheTime.Date && p.Domain == domain);
|
|
_scheduleResultOpMaster.Delete(p => sczWorkords.Contains(p.WorkOrd) && p.WorkDate > scheTime.Date && p.Domain == domain);
|
|
|
|
|
|
|
|
//保存下一天的日计划数据
|
|
//保存下一天的日计划数据
|
|
|
- _periodSequenceDet.Insert(periodSequenceDtls.Where(p => sczWorkords.Contains(p.WorkOrds) && p.PlanDate >= scheTime.Date).ToList());
|
|
|
|
|
- _scheduleResultOpMaster.Insert(scheduleMasters.Where(p => sczWorkords.Contains(p.WorkOrd) && p.WorkDate >= scheTime.Date).ToList());
|
|
|
|
|
|
|
+ _periodSequenceDet.Insert(periodSequenceDtls.Where(p => sczWorkords.Contains(p.WorkOrds) && p.PlanDate > scheTime.Date).ToList());
|
|
|
|
|
+ _scheduleResultOpMaster.Insert(scheduleMasters.Where(p => sczWorkords.Contains(p.WorkOrd) && p.WorkDate > scheTime.Date).ToList());
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
//未投产的工单,当前日期及以后的排产记录全部删除
|
|
//未投产的工单,当前日期及以后的排产记录全部删除
|
|
@@ -705,6 +743,10 @@ namespace Business.ResourceExamineManagement
|
|
|
/// <param name="allResults">产线占用记录</param>
|
|
/// <param name="allResults">产线占用记录</param>
|
|
|
public void LineSchedule(WorkOrdMaster workOrd, List<WorkOrdRouting> workOrdRoutings, List<ProdLineDetail> prodLines,List<PeriodSequenceDet> periodsDet, List<ScheduleResultOpMaster> scheduleResults, List<ScheduleResultOpMaster> allResults)
|
|
public void LineSchedule(WorkOrdMaster workOrd, List<WorkOrdRouting> workOrdRoutings, List<ProdLineDetail> prodLines,List<PeriodSequenceDet> periodsDet, List<ScheduleResultOpMaster> scheduleResults, List<ScheduleResultOpMaster> allResults)
|
|
|
{
|
|
{
|
|
|
|
|
+ if (workOrd.WorkOrd == "M500080907")
|
|
|
|
|
+ {
|
|
|
|
|
+ var isy = 1;
|
|
|
|
|
+ }
|
|
|
//生产周期
|
|
//生产周期
|
|
|
List<PeriodSequenceDet> curSequences = new List<PeriodSequenceDet>();
|
|
List<PeriodSequenceDet> curSequences = new List<PeriodSequenceDet>();
|
|
|
//排产明细
|
|
//排产明细
|