|
@@ -276,6 +276,15 @@ namespace Business.ResourceExamineManagement
|
|
|
//正常工单
|
|
//正常工单
|
|
|
var zcWorkOrds = workOrds.Where(p => string.IsNullOrEmpty(p.Typed)).ToList();
|
|
var zcWorkOrds = workOrds.Where(p => string.IsNullOrEmpty(p.Typed)).ToList();
|
|
|
|
|
|
|
|
|
|
+ //先删除计划开工时间在当前日期之前且状态不为"w"的工单日计划
|
|
|
|
|
+ List<WorkOrdMaster> delWorks = workOrds.Where(p => p.OrdDate < scheTime && p.Status.ToUpper() != "W").ToList();
|
|
|
|
|
+ if (delWorks.Any())
|
|
|
|
|
+ {
|
|
|
|
|
+ _periodSequenceDet.Delete(p => delWorks.Select(m=>m.WorkOrd).Contains(p.WorkOrds));
|
|
|
|
|
+ _scheduleResultOpMaster.Delete(p => delWorks.Select(m => m.WorkOrd).Contains(p.WorkOrd));
|
|
|
|
|
+ _workOrdSetupTimeRecord.Delete(p=> delWorks.Select(m => m.WorkOrd).Contains(p.WorkOrd));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
//2、获取数据
|
|
//2、获取数据
|
|
|
//获取工单工艺路径数据
|
|
//获取工单工艺路径数据
|
|
|
List<WorkOrdRouting> workOrdRoutings = _workOrdRouting.Select(p => workOrds.Select(m => m.WorkOrd).Contains(p.WorkOrd) && p.ParentOp == 0 && p.Domain == domain && p.Status != "C" && p.IsActive);
|
|
List<WorkOrdRouting> workOrdRoutings = _workOrdRouting.Select(p => workOrds.Select(m => m.WorkOrd).Contains(p.WorkOrd) && p.ParentOp == 0 && p.Domain == domain && p.Status != "C" && p.IsActive);
|
|
@@ -378,7 +387,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//计算开始排产时间或者上次报工时间到当前时间点的预估产能
|
|
//计算开始排产时间或者上次报工时间到当前时间点的预估产能
|
|
|
decimal sumTimes = 0m;
|
|
decimal sumTimes = 0m;
|
|
|
//工单没有报工记录
|
|
//工单没有报工记录
|
|
|
- if (curOp.Last == null)
|
|
|
|
|
|
|
+ if (curOp.Last == null && item.Status.ToUpper() == "W")
|
|
|
{
|
|
{
|
|
|
if (curRecord == null)
|
|
if (curRecord == null)
|
|
|
{
|
|
{
|
|
@@ -835,7 +844,7 @@ namespace Business.ResourceExamineManagement
|
|
|
//计算开始排产时间或者上次报工时间到当前时间点的预估产能
|
|
//计算开始排产时间或者上次报工时间到当前时间点的预估产能
|
|
|
decimal sumWorkTimes = 0m;
|
|
decimal sumWorkTimes = 0m;
|
|
|
//工单没有报工记录
|
|
//工单没有报工记录
|
|
|
- if (curOp.Last == null)
|
|
|
|
|
|
|
+ if (curOp.Last == null && item.Status.ToUpper() == "W")
|
|
|
{
|
|
{
|
|
|
if (curRecord == null)
|
|
if (curRecord == null)
|
|
|
{
|
|
{
|
|
@@ -4215,7 +4224,7 @@ namespace Business.ResourceExamineManagement
|
|
|
|
|
|
|
|
//计算上次报工到当前时间点的预估生产数量,如果没有报工记录,则计算产线准备时间完成到当前时间点的预估生产数量
|
|
//计算上次报工到当前时间点的预估生产数量,如果没有报工记录,则计算产线准备时间完成到当前时间点的预估生产数量
|
|
|
decimal planQty = 0m;
|
|
decimal planQty = 0m;
|
|
|
- if (routing.Last == null && restTime < 0)
|
|
|
|
|
|
|
+ if (routing.Last == null && restTime < 0 && workOrd.Status.ToUpper() == "W")
|
|
|
{
|
|
{
|
|
|
//工序没有报工,使用产线准备完成之后到当前时间点剩余时长计算预估生产数量
|
|
//工序没有报工,使用产线准备完成之后到当前时间点剩余时长计算预估生产数量
|
|
|
planQty = Math.Floor(Math.Abs(restTime) * rate);
|
|
planQty = Math.Floor(Math.Abs(restTime) * rate);
|
|
@@ -4540,6 +4549,10 @@ namespace Business.ResourceExamineManagement
|
|
|
{
|
|
{
|
|
|
var curLine = lines.FirstOrDefault(p => p.Line == curRecord.Line);
|
|
var curLine = lines.FirstOrDefault(p => p.Line == curRecord.Line);
|
|
|
if (curLine != null) {
|
|
if (curLine != null) {
|
|
|
|
|
+ //产线工作日历:当前产线的工作日历 + 默认工作日历
|
|
|
|
|
+ var curCalendars = calendars.Where(p => p.ProdLine == curLine.Line || string.IsNullOrEmpty(p.ProdLine)).ToList();
|
|
|
|
|
+ var curQtyDtls = qualityLines.Where(p => p.ProdLine == curLine.Line).ToList();
|
|
|
|
|
+ scheTime = CalcActStartTime(curLine.Line, scheTime, curCalendars, curQtyDtls);
|
|
|
startDto.RecID = curLine.RecID;
|
|
startDto.RecID = curLine.RecID;
|
|
|
startDto.Line = curLine.Line;
|
|
startDto.Line = curLine.Line;
|
|
|
startDto.StartTime = scheTime;
|
|
startDto.StartTime = scheTime;
|
|
@@ -4636,7 +4649,7 @@ namespace Business.ResourceExamineManagement
|
|
|
|
|
|
|
|
//计算上次报工到当前时间点的预估生产数量,如果没有报工记录,则计算产线准备时间完成到当前时间点的预估生产数量
|
|
//计算上次报工到当前时间点的预估生产数量,如果没有报工记录,则计算产线准备时间完成到当前时间点的预估生产数量
|
|
|
decimal planQty = 0m;
|
|
decimal planQty = 0m;
|
|
|
- if (routing.Last == null && restTime < 0)
|
|
|
|
|
|
|
+ if (routing.Last == null && restTime < 0 && workOrd.Status.ToUpper() == "W")
|
|
|
{
|
|
{
|
|
|
//工序没有报工,使用产线准备完成之后到当前时间点剩余时长计算预估生产数量
|
|
//工序没有报工,使用产线准备完成之后到当前时间点剩余时长计算预估生产数量
|
|
|
planQty = Math.Floor(Math.Abs(restTime) * rate);
|
|
planQty = Math.Floor(Math.Abs(restTime) * rate);
|