/// <summary>
/// 递归查找前工序,直到找到没有跳序的前工序
/// </summary>
/// <param name="process"></param>
/// <returns></returns>
private async Task<List<string>> HasReportedWorkAsync(List<WorkOrderProcedureEntity> proceduList)
{
if (proceduList.Count <= 0) return new List<string>();
//前工序ID
var pId = proceduList.Select(x => x.PreNid).ToList();
//查询前工序任务
var preWOProList = await BaseDal.Db.Queryable<WorkOrderProcedureEntity>().Where(p => p.WorkorderId == proceduList[0].WorkorderId && p.IsDelete == 0 && pId.Contains(p.OperationNo)).ToListAsync();
if (preWOProList.Count <= 0) return new List<string>();
//查询未跳序的工序
var isFlagSkip = preWOProList.Where(x => x.SkipOperation == 0).ToList();
//没有未跳序并且有前序时
if (isFlagSkip.Count <= 0 && preWOProList.Count > 0)
{
//没有未跳序的工序,则继续往上工序找
return await HasReportedWorkAsync(preWOProList);
}
else
{
//存在没有跳序的工序,则直接返回
return preWOProList.Select(x => x.Nid).ToList();
}
}