public async Task <bool> FindPrepareInfos(FindPrepareInfosInput input) { var query = this._sapMOrderProcessDispatchPrepareStepRepository.GetAll() .Include(s => s.PrepareInfo) .WhereIf(!string.IsNullOrWhiteSpace(input.PrepareType) && input.PrepareType == SapMOrderProcessDispatchPrepareStepTransTypes.ALL, p => (p.PrepareInfo.Tooling_IsPreparedFinished == Convert.ToInt16(input.PrepareStatus) || p.PrepareInfo.NC_IsPreparedFinished == Convert.ToInt16(input.PrepareStatus))) .WhereIf((!string.IsNullOrWhiteSpace(input.PrepareType) && input.PrepareType.Trim().ToUpper() == SapMOrderProcessDispatchPrepareStepTransTypes.TL), p => (p.StepTransactionType == SapMOrderProcessDispatchPrepareStepTransTypes.TL && p.PrepareInfo.Tooling_IsPreparedFinished == Convert.ToInt16(input.PrepareStatus))) .WhereIf((!string.IsNullOrWhiteSpace(input.PrepareType) && input.PrepareType.Trim().ToUpper() == SapMOrderProcessDispatchPrepareStepTransTypes.NC), p => (p.StepTransactionType == SapMOrderProcessDispatchPrepareStepTransTypes.NC && p.PrepareInfo.NC_IsPreparedFinished == Convert.ToInt16(input.PrepareStatus))); //var query = this._sapMOrderProcessDispatchPrepareRepository.GetAll() // .Include(s => s.PrepareSteps).Where(p => p.Tooling_IsPreparedFinished == Convert.ToInt16(input.PrepareStatus) || p.NC_IsPreparedFinished == Convert.ToInt16(input.PrepareStatus)); //var list = this._sapMOrderProcessDispatchPrepareStepRepository.GetAll() // .Include(s => s.PrepareInfo) // .WhereIf(!string.IsNullOrWhiteSpace(input.PrepareType) && input.PrepareType != "all", p => p.StepTransactionType == input.PrepareType.ToUpper()) // .WhereIf((!string.IsNullOrWhiteSpace(input.PrepareType) && input.PrepareType.Trim().ToUpper() == SapMOrderProcessDispatchPrepareStepTransTypes.TL), p => (p.StepTransactionType == SapMOrderProcessDispatchPrepareStepTransTypes.TL && p.PrepareInfo.Tooling_IsPreparedFinished == Convert.ToInt16(input.PrepareStatus))) // .WhereIf((!string.IsNullOrWhiteSpace(input.PrepareType) && input.PrepareType.Trim().ToUpper() == SapMOrderProcessDispatchPrepareStepTransTypes.NC), p => (p.StepTransactionType == SapMOrderProcessDispatchPrepareStepTransTypes.NC && p.PrepareInfo.NC_IsPreparedFinished == Convert.ToInt16(input.PrepareStatus))); var count = await query.CountAsync(); // var prepareSteps = await query.OrderBy(p => p.PrepareInfo.) //var prepareSteps = await query // .OrderBy(p => p.) // .ThenByDescending(b => b.HandOverBill.BillCodePrefix) // .ThenByDescending(b => b.HandOverBill.BillCodeSerialNumber) // .PageBy(input).ToListAsync(); return(await Task.FromResult(false)); }
public async Task <IPagedResult <PrepareInfoWithStatusOutput> > FindPrepareInfos_NC(FindPrepareInfosInput input) { short prepareStatus = Convert.ToInt16(input.PrepareStatus); var query = this._sapMOrderProcessDispatchPrepareStepRepository.GetAll() .Include(s => s.PrepareInfo) //.WhereIf(!string.IsNullOrWhiteSpace(input.PrepareType) && input.PrepareType == SapMOrderProcessDispatchPrepareStepTransTypes.ALL, p => ((p.StepTransactionType == SapMOrderProcessDispatchPrepareStepTransTypes.TL && p.PrepareInfo.Tooling_IsPreparedFinished == prepareStatus) //|| (p.StepTransactionType == SapMOrderProcessDispatchPrepareStepTransTypes.NC && p.PrepareInfo.NC_IsPreparedFinished == prepareStatus))) .WhereIf((!string.IsNullOrWhiteSpace(input.PrepareType) && input.PrepareType.Trim().ToUpper() == SapMOrderProcessDispatchPrepareStepTransTypes.TL), p => (p.StepTransactionType == SapMOrderProcessDispatchPrepareStepTransTypes.TL && p.PrepareInfo.Tooling_IsPreparedFinished == prepareStatus)) .WhereIf((!string.IsNullOrWhiteSpace(input.PrepareType) && input.PrepareType.Trim().ToUpper() == SapMOrderProcessDispatchPrepareStepTransTypes.NC), p => (p.StepTransactionType == SapMOrderProcessDispatchPrepareStepTransTypes.NC && p.PrepareInfo.NC_IsPreparedFinished == prepareStatus)); //var query = this._sapMOrderProcessDispatchPrepareStepRepository.GetAll() // .Include(s => s.PrepareInfo) // .WhereIf((!string.IsNullOrWhiteSpace(input.PrepareType) && input.PrepareType.Trim().ToUpper() == SapMOrderProcessDispatchPrepareStepTransTypes.NC), p => (p.StepTransactionType == SapMOrderProcessDispatchPrepareStepTransTypes.NC && p.PrepareInfo.NC_IsPreparedFinished.Value == prepareStatus)); var count = await query.CountAsync(); var prepareInfos = await query .Select(p => new { Id = p.Id, DispatchWorKTicketID = p.PrepareInfo.DispatchWorKTicketID, StepTransactionType = p.StepTransactionType, StepName = p.StepName, IsPreparedFinished = p.StepTransactionType == SapMOrderProcessDispatchPrepareStepTransTypes.TL ? p.PrepareInfo.Tooling_IsPreparedFinished : ( p.StepTransactionType == SapMOrderProcessDispatchPrepareStepTransTypes.NC ? p.PrepareInfo.NC_IsPreparedFinished : (short)0), StepRequiredDate = p.StepTransactionType == SapMOrderProcessDispatchPrepareStepTransTypes.TL ? p.PrepareInfo.Tooling_RequiredDate : ( p.StepTransactionType == SapMOrderProcessDispatchPrepareStepTransTypes.NC ? p.PrepareInfo.NC_RequiredDate : default(DateTime)), CreationTime = p.CreationTime }).OrderBy(p => p.StepRequiredDate).PageBy(input).ToListAsync(); var preparegroup = prepareInfos.GroupBy(p => new SapMOrderProcessDispatchPrepareKey { DispatchWorKTicketID = p.DispatchWorKTicketID, StepStatus = p.IsPreparedFinished.HasValue ? p.IsPreparedFinished : (short)0, StepType = p.StepTransactionType }).Select(p => new { PrepareInfoKey = p.Key, PrepareStartedValue = p.Where(ps => ps.StepName == ps.StepTransactionType + " Started").OrderByDescending(ps => ps.CreationTime).FirstOrDefault(), PrepareFinishedValue = p.Where(ps => ps.StepName == ps.StepTransactionType + " Finished").OrderByDescending(ps => ps.CreationTime).FirstOrDefault() //PrepareStepValue = p.Where(ps => ps.StepTransactionType == SapMOrderProcessDispatchPrepareStepTransTypes.TL && ps.IsStepSuccess).OrderByDescending(ps => ps.CreationTime).ToList() }); //var ids = prepareInfos.Select(p => p.PrepareInfo.DispatchWorKTicketID.ToString()).Distinct().ToList(); var ids = preparegroup.Select(p => p.PrepareInfoKey.DispatchWorKTicketID.ToString()).Distinct().ToList(); var orders = await _dmesWorkTicketRepository.FindDispatchedOrdersByDispatchWorkID(new DmesFindDispatchedOrderByTicketInput() { DispatchWorkIDs = ids }); List <PrepareInfoWithStatusOutput> result = new List <PrepareInfoWithStatusOutput>(); foreach (var info in preparegroup) { DmesOrderOutput orderBean = orders.SingleOrDefault(o => o.DispatchWorKTicketID == info.PrepareInfoKey.DispatchWorKTicketID); DateTime stepStarted = (info.PrepareStartedValue == null || info.PrepareStartedValue.Id <= 0) ? default(DateTime) : info.PrepareStartedValue.CreationTime; DateTime stepFinished = (info.PrepareFinishedValue == null || info.PrepareFinishedValue.Id <= 0) ? default(DateTime) : info.PrepareFinishedValue.CreationTime; PrepareInfoWithStatusOutput Outbean = new PrepareInfoWithStatusOutput() { OrderNumber = orderBean.OrderNumber, RoutingNumber = orderBean.RoutingNumber, MaterialNumber = orderBean.MaterialNumber, MaterialDescription = orderBean.MaterialDescription, ActualWorkID = orderBean.ActualWorkID, ActualWorkName = orderBean.ActualWorkName, DispatchWorKTicketID = info.PrepareInfoKey.DispatchWorKTicketID, StepTransactionType = info.PrepareInfoKey.StepType, StepStatus = info.PrepareInfoKey.StepStatus, StepStatusStr = Enum.GetName(typeof(SapMOrderProcessDispatchPrepareStepStatus), info.PrepareInfoKey.StepStatus), StepStartedDate = stepStarted == default(DateTime) ? "" : stepStarted.ToString("yyyy-MM-dd HH:mm:ss"), StepRequiredDate = stepStarted == default(DateTime) ? "" : stepStarted.AddDays(1).ToString("yyyy-MM-dd HH:mm:ss"), StepFinishedDate = stepFinished == DateTime.MinValue ? "" : stepFinished.ToString("yyyy-MM-dd HH:mm:ss"), StepDelayed = stepFinished > stepStarted.AddDays(1) ? "超期" : ((stepFinished == DateTime.MinValue && stepStarted.AddDays(1) <= DateTime.Now) ? "超期" : "") }; result.Add(Outbean); } return(new PagedResultDto <PrepareInfoWithStatusOutput>(count, result)); }