using System;
|
using iWareSql.DBModel;
|
using System.Linq;
|
using XiGang.Core.Model;
|
using iWareCommon;
|
using iWareCommon.Common.Globle;
|
|
namespace iWareSql.DataAccess
|
{
|
|
/// <summary>
|
/// 出库计划
|
/// </summary>
|
public class PlanOutTaskHandler
|
{
|
/// <summary>
|
/// 是否需要插队
|
/// </summary>
|
/// <param name="context"></param>
|
/// <returns>true:需要,false:不需要插队</returns>
|
public static bool IsNeedChaDuiCommonTaskSequenceGuid(DbModel context, string taskSequenceGuid)
|
{
|
if (string.IsNullOrEmpty(taskSequenceGuid))
|
{
|
return false;//不需要插队
|
}
|
var queryState1 = (int)OutTaskDetailStateEnum.完成;
|
var queryState2 = (int)OutTaskDetailStateEnum.缺料;
|
var queryState3 = (int)OutTaskDetailStateEnum.已取消;
|
var detaiList = context.Plan_OutTaskDetail.Where(x =>
|
(x.OutTaskDetailState != queryState1 && x.OutTaskDetailState != queryState2 && x.OutTaskDetailState != queryState3)
|
&& x.TaskSequenceGuid == taskSequenceGuid
|
).ToList();
|
if (detaiList != null && detaiList.Count > 0)
|
{//如果有,表示还有一些未结束,就认为 不需要插队
|
return false;//不需要插队
|
}
|
else
|
{
|
return true;//需要插队
|
}
|
}
|
|
/// <summary>
|
/// 是否存在 还在下发的计划
|
/// </summary>
|
/// <param name="context"></param>
|
/// <returns>true:存在,false:不存在</returns>
|
public static bool IsExistRuningOutTaskDetail(DbModel context)
|
{
|
var queryState1 = (int)OutTaskDetailStateEnum.等待中;
|
var queryState2 = (int)OutTaskDetailStateEnum.缺料;
|
var detaiList = context.Plan_OutTaskDetail.Where(x => x.OutTaskDetailState == queryState1 || x.OutTaskDetailState == queryState2).ToList();
|
if (detaiList != null && detaiList.Count > 0)
|
{
|
var allCount = detaiList.Count;
|
var queLiaoCount = detaiList.Where(x => x.OperationRemark == SysGloble.QUELIAO_STR).Count();
|
if (queLiaoCount == allCount)
|
{
|
return false;
|
}
|
return true;
|
}
|
else
|
{
|
return false;
|
}
|
}
|
|
/// <summary>
|
/// 当出库任务rgv任务完成后,更新状态
|
/// </summary>
|
/// <param name="context"></param>
|
/// <param name="planOutDetailId"></param>
|
/// <param name="currnetChange"></param>
|
/// <param name="remark"></param>
|
public static void UpdatePlanStateToFinished(DbModel context, Task_Main mainTask, string remark)
|
{
|
//获取主表任务
|
Plan_OutTaskDetail outDetailTask = context.Plan_OutTaskDetail.Where(x => x.Id == mainTask.Plan_OutTaskDetail_Id).FirstOrDefault();
|
if (outDetailTask != null)
|
{
|
Plan_OutTask outTask = context.Plan_OutTask.Where(x => x.Id == outDetailTask.M_PlanId).First();
|
|
|
var changeOutTaskDetailState = OutTaskDetailStateEnum.完成;
|
PlanOutTaskHandler.UpdateStateForOutTaskDetail(outDetailTask, changeOutTaskDetailState, remark);
|
|
//这里暂时不处理主表的状态
|
}
|
}
|
|
|
|
//private static OutPlanStateEnum GetChangeStateForPlan_OutTask(DbModel context, Plan_OutTask outTask, OutTaskDetailStateEnum currnetChange, string remark)
|
//{
|
// var queryState1 = (int)OutTaskDetailStateEnum.完成;
|
// var queryState2 = (int)OutTaskDetailStateEnum.执行中;
|
// var allPlanList = context.Plan_OutTaskDetail.Where(x => x.M_PlanId == outTask.Id).ToList();
|
// var issued_planList = allPlanList.Where(x => x.OutTaskDetailState == queryState1 || x.OutTaskDetailState == queryState2).ToList();
|
// int issued_planListCount = issued_planList.Count();
|
// if (currnetChange == OutTaskDetailStateEnum.完成 || currnetChange == OutTaskDetailStateEnum.执行中)
|
// {
|
// //计入本次要修改的条数
|
// issued_planListCount += 1;
|
// }
|
// OutPlanStateEnum changeOutTaskDetailState;
|
// if (allPlanList.Count() == issued_planListCount)
|
// {//更新主表状态为 全部下发
|
|
// changeOutTaskDetailState = OutPlanStateEnum.全部下发;
|
// PlanOutTaskHandler.UpdateStateForOutTask(outTask, changeOutTaskDetailState, remark);
|
// }
|
// else if (issued_planListCount > 0)
|
// {
|
// changeOutTaskDetailState = OutPlanStateEnum.部分下发;
|
// PlanOutTaskHandler.UpdateStateForOutTask(outTask, changeOutTaskDetailState, remark);
|
// }
|
//}
|
|
|
|
/// <summary>
|
/// 更新明细表的状态
|
/// </summary>
|
/// <param name="outDetailTask"></param>
|
/// <param name="changeOutTaskDetailState"></param>
|
/// <param name="remark"></param>
|
public static void UpdateStateForOutTaskDetail(Plan_OutTaskDetail outDetailTask, OutTaskDetailStateEnum changeOutTaskDetailState, string remark)
|
{
|
outDetailTask.OutTaskDetailState = (int)changeOutTaskDetailState;
|
outDetailTask.OutTaskDetailStateName = changeOutTaskDetailState.ToString();
|
if (changeOutTaskDetailState == OutTaskDetailStateEnum.完成)
|
{
|
outDetailTask.FinishTime = DateTime.Now;//增加计划子表完成时间 【EditBy shaocx,2022-06-20】
|
}
|
|
outDetailTask.ModifyBy = SysGloble.WCSSystem;
|
outDetailTask.ModifyTime = DateTime.Now;
|
outDetailTask.OperationRemark = remark + ",更改状态为" + changeOutTaskDetailState.ToString();
|
}
|
|
/// <summary>
|
/// 更新主表的状态
|
/// </summary>
|
/// <param name="outDetailTask"></param>
|
/// <param name="changeOutTaskDetailState"></param>
|
/// <param name="remark"></param>
|
public static void UpdateStateForOutTask(Plan_OutTask outTask, OutPlanStateEnum changeOutTaskDetailState, string remark)
|
{
|
outTask.PlanState = (int)changeOutTaskDetailState;
|
outTask.PlanStateName = changeOutTaskDetailState.ToString();
|
outTask.ModifyBy = SysGloble.WCSSystem;
|
outTask.ModifyTime = DateTime.Now;
|
outTask.OperationRemark = remark + ",更改状态为" + changeOutTaskDetailState.ToString();
|
}
|
}
|
}
|