Пример #1
0
        public async Task <PagedResultDto <ReadyMBillDetailedReportDto> > GetAllAsync(string readyBillId, PagedResultRequestMESDto input)
        {
            var resS = await

                       Task.Factory.StartNew(() =>
            {
                // 获取输入备料单的记账备料单
                var readyBill = _repositoryReadyMBill.FirstOrDefault(readyBillId);

                if (readyBill == null)
                {
                    return(new PagedResultDto <ReadyMBillDetailedReportDto>(0, new List <ReadyMBillDetailedReportDto>()));
                }

                // 获取筛选条件中的 备料单 合集
                var readyBills = _repositoryReadyMBill.GetAll().Where(s => s.ReReadyMBillId == readyBill.ReReadyMBillId).Include(r => r.WorkBills).ThenInclude(s => s.WorkBill).ToList();

                // 查询记账备料单的相信信息
                var ReadyMBillds = _repositoryReadyMBilld.GetAll().Where(s => readyBills.Select(r => r.Id).Contains(s.ReadyMBillId)).ToList();

                var toList = new Func <IEnumerable <IEnumerable <string> >, string>(i =>
                {
                    var list = new List <string>();
                    foreach (var item in i)
                    {
                        foreach (var str in item)
                        {
                            list.Add(str);
                        }
                    }

                    return(string.Join('|', list.Distinct()));
                });

                // 分组
                var res = ReadyMBillds.GroupBy(r => r.PartNoId).Select(s => new ReadyMBillDetailedReportDto()
                {
                    ReReadyMBillId   = readyBill.ReReadyMBillId,
                    WorkBillIds      = toList(readyBills.Select(r => r.WorkBills).Select(w => w.Select(wo => wo.WorkBillId + ":" + wo.Qty)).Distinct()),
                    Products         = toList(readyBills.Select(r => r.WorkBills).Select(w => w.Select(wo => wo.WorkBill.ProductId)).Distinct()),
                    Lines            = toList(readyBills.Select(r => r.WorkBills).Select(w => w.Select(wo => wo.WorkBill.LineId)).Distinct()),
                    DemandQty        = s.Sum(r => r.Qty),
                    SendQty          = s.Sum(r => r.SendQty),
                    PartNoId         = s.Key,
                    FollowQty        = s.Sum(r => r.FollowQty),
                    ReadyMBillIds    = string.Join('|', readyBills.Select(r => r.Id)),
                    ReelMoveMethodId = s.FirstOrDefault().ReelMoveMethodId,
                    ReturnQty        = s.Sum(r => r.ReturnQty),
                    MoreSendQty      = s.Sum(r => r.SendQty) - s.Sum(r => r.Qty) - s.Sum(r => r.ReturnQty),
                    NoFollowQty      = s.Sum(r => r.SendQty) - s.Sum(r => r.FollowQty),
                    RealSendQty      = s.Sum(r => r.SendQty) - s.Sum(r => r.ReturnQty)
                });

                var query = MESPagedResult.GetMESPagedResult <ReadyMBillDetailedReportDto>(input, res.AsQueryable());

                var tasksCount = query.Count();

                //默认的分页方式
                //var taskList = query.Skip(input.SkipCount).Take(input.MaxResultCount).ToList();

                //ABP提供了扩展方法PageBy分页方式
                var taskList = query.PageBy(input).ToList();

                return(new PagedResultDto <ReadyMBillDetailedReportDto>(tasksCount, taskList));
            });

            return(resS);
        }
Пример #2
0
        public async Task <PagedResultDto <ReelMoveLogDto> > GetAllAsync(string reelMoveMethodId, PagedResultRequestMESDto input)
        {
            input.RequestMESDtos.Add(new RequestMESDto()
            {
                PropertyName = "ReelMoveMethodId", Operation = Operation.Equal, LinkOperation = LinkOperation.And, QueryValue = reelMoveMethodId
            });

            var query = MESPagedResult.GetMESPagedResult <ReelMoveLog>(input, _repositoryReelMoveLog.GetAllIncluding(s => s.CreatorUser));

            var tasksCount = await query.CountAsync();

            //默认的分页方式
            //var taskList = query.Skip(input.SkipCount).Take(input.MaxResultCount).ToList();

            //ABP提供了扩展方法PageBy分页方式
            var taskList = query.PageBy(input).ToList();

            return(new PagedResultDto <ReelMoveLogDto>(tasksCount, taskList.MapTo <List <ReelMoveLogDto> >()));
        }