public ActionResult sumSearch(Pager <List <OutRecordModel> > pager, OutRecordQuery condition)
 {
     ViewBag.condition = condition;
     pager             = service.searchSumByCondition(pager, condition);
     ViewBag.sumProfit = service.searchSumProfitByCondition(condition);
     return(View("SumIndex", pager));
 }
        public int searchCountByCondition(OutRecordQuery condition)
        {
            LayerDbContext context = new LayerDbContext();
            var            result  = context.tradingRecord.Where(x => x.id > 0);

            result = string.IsNullOrEmpty(condition.cashOrder) ? result : result.Where(t => t.cashOrder.Contains(condition.cashOrder));
            result = string.IsNullOrEmpty(condition.materialName) ? result : result.Where(x => x.materialInfo.materialName == (condition.materialName));
            result = string.IsNullOrEmpty(condition.mat_size) ? result : result.Where(x => x.materialInfo.mat_size == condition.mat_size);
            result = !condition.createdDateBegin.HasValue ? result : result.Where(x => x.createdDate >= condition.createdDateBegin);
            result = !condition.createdDateEnd.HasValue ? result : result.Where(x => x.createdDate <= condition.createdDateEnd);
            return(result.Count());
        }
        public int searchSumCountByCondition(OutRecordQuery condition)
        {
            LayerDbContext context = new LayerDbContext();
            var            result  = from t in context.tradingRecord
                                     join p in context.profitRecord on new { cashOrder = t.cashOrder, materialId = t.materialId } equals new { cashOrder = p.cashOrder, materialId = p.materialId }
            select new OutRecordModel
            {
                cashOrder    = t.cashOrder,
                materialId   = t.materialId,
                alais        = t.materialInfo.alias,
                count        = t.count,
                createdBy    = t.createdBy,
                materialName = t.materialInfo.materialName,
                mat_size     = t.materialInfo.mat_size,
                priceIn      = p.priceIn,
                priceOut     = p.priceOut,
                profit       = p.profit,
                unit         = t.materialInfo.unit,
                createdDate  = t.createdDate
            };

            result = string.IsNullOrEmpty(condition.cashOrder) ? result : result.Where(t => t.cashOrder.Contains(condition.cashOrder));
            result = string.IsNullOrEmpty(condition.materialName) ? result : result.Where(x => x.materialName == (condition.materialName));
            result = string.IsNullOrEmpty(condition.mat_size) ? result : result.Where(x => x.mat_size == condition.mat_size);
            result = !condition.createdDateBegin.HasValue ? result : result.Where(x => x.createdDate >= condition.createdDateBegin);
            result = !condition.createdDateEnd.HasValue ? result : result.Where(x => x.createdDate <= condition.createdDateEnd);

            var result1 = result.GroupBy(x => x.materialId).Select(x => new
            {
                materialId   = x.Key,
                materialName = x.Max(item => item.materialName),
                mat_size     = x.Max(item => item.mat_size),
                count        = x.Sum(item => item.count),
                profit       = x.Sum(item => item.profit)
            }).Count();

            return(result1);
        }
        public float searchSumProfitByCondition(OutRecordQuery condition)
        {
            LayerDbContext context = new LayerDbContext();
            var            result  = context.tradingRecord.Where(x => x.id > 0);

            result = string.IsNullOrEmpty(condition.cashOrder) ? result : result.Where(t => t.cashOrder.Contains(condition.cashOrder));
            result = string.IsNullOrEmpty(condition.materialName) ? result : result.Where(x => x.materialInfo.materialName == (condition.materialName));
            result = string.IsNullOrEmpty(condition.mat_size) ? result : result.Where(x => x.materialInfo.mat_size == condition.mat_size);
            result = !condition.createdDateBegin.HasValue ? result : result.Where(x => x.createdDate >= condition.createdDateBegin);
            result = !condition.createdDateEnd.HasValue ? result : result.Where(x => x.createdDate <= condition.createdDateEnd);
            var proResult = from t in result
                            join p in context.profitRecord on new { cashOrder = t.cashOrder, materialId = t.materialId } equals new { cashOrder = p.cashOrder, materialId = p.materialId }
            select p.profit;

            if (proResult.Count() == 0)
            {
                return(0);
            }
            else
            {
                return(proResult.Sum());
            }
        }
 public Pager <List <OutRecordModel> > searchSumByCondition(Pager <List <OutRecordModel> > pager, OutRecordQuery t)
 {
     pager.data     = dao.searchSumByCondition(pager, t);
     pager.recTotal = dao.searchSumCountByCondition(t);
     return(pager);
 }
 public float searchSumProfitByCondition(OutRecordQuery t)
 {
     return(dao.searchSumProfitByCondition(t));;
 }
        /// <summary>
        /// 出库查询
        /// </summary>
        /// <param name="pager"></param>
        /// <param name="condition"></param>
        /// <returns></returns>
        public List <OutRecordModel> searchByCondition(Pager <List <OutRecordModel> > pager, OutRecordQuery condition)
        {
            int            start   = (pager.page - 1) * pager.recPerPage;
            LayerDbContext context = new LayerDbContext();
            var            result  = from t in context.tradingRecord
                                     join p in context.profitRecord on new { cashOrder = t.cashOrder, materialId = t.materialId } equals new { cashOrder = p.cashOrder, materialId = p.materialId }
            select new OutRecordModel
            {
                cashOrder    = t.cashOrder,
                materialId   = t.materialId,
                alais        = t.materialInfo.alias,
                count        = t.count,
                createdBy    = t.createdBy,
                materialName = t.materialInfo.materialName,
                mat_size     = t.materialInfo.mat_size,
                priceIn      = p.priceIn,
                priceOut     = p.priceOut,
                profit       = p.profit,
                unit         = t.materialInfo.unit,
                createdDate  = t.createdDate
            };

            result = string.IsNullOrEmpty(condition.cashOrder) ? result : result.Where(t => t.cashOrder.Contains(condition.cashOrder));
            result = string.IsNullOrEmpty(condition.materialName) ? result : result.Where(x => x.materialName == (condition.materialName));
            result = string.IsNullOrEmpty(condition.mat_size) ? result : result.Where(x => x.mat_size == condition.mat_size);
            result = !condition.createdDateBegin.HasValue ? result : result.Where(x => x.createdDate >= condition.createdDateBegin);
            result = !condition.createdDateEnd.HasValue ? result : result.Where(x => x.createdDate <= condition.createdDateEnd);
            result = result.OrderByDescending(x => x.createdDate).Skip(start).Take(pager.recPerPage);
            return(result.ToList());
        }
        /// <summary>
        /// 出库汇总查询
        /// </summary>
        /// <param name="pager"></param>
        /// <param name="t"></param>
        /// <returns></returns>
        public List <OutRecordModel> searchSumByCondition(Pager <List <OutRecordModel> > pager, OutRecordQuery condition)
        {
            int            start   = (pager.page - 1) * pager.recPerPage;
            LayerDbContext context = new LayerDbContext();
            var            result  = from t in context.tradingRecord
                                     join p in context.profitRecord on new { cashOrder = t.cashOrder, materialId = t.materialId } equals new { cashOrder = p.cashOrder, materialId = p.materialId }
            select new OutRecordModel
            {
                cashOrder    = t.cashOrder,
                materialId   = t.materialId,
                alais        = t.materialInfo.alias,
                count        = t.count,
                createdBy    = t.createdBy,
                materialName = t.materialInfo.materialName,
                mat_size     = t.materialInfo.mat_size,
                priceIn      = p.priceIn,
                priceOut     = p.priceOut,
                profit       = p.profit,
                unit         = t.materialInfo.unit,
                createdDate  = t.createdDate
            };

            result = string.IsNullOrEmpty(condition.cashOrder) ? result : result.Where(t => t.cashOrder.Contains(condition.cashOrder));
            result = string.IsNullOrEmpty(condition.materialName) ? result : result.Where(x => x.materialName == (condition.materialName));
            result = string.IsNullOrEmpty(condition.mat_size) ? result : result.Where(x => x.mat_size == condition.mat_size);
            result = !condition.createdDateBegin.HasValue ? result : result.Where(x => x.createdDate >= condition.createdDateBegin);
            result = !condition.createdDateEnd.HasValue ? result : result.Where(x => x.createdDate <= condition.createdDateEnd);

            var result1 = result.GroupBy(x => x.materialId).Select(x => new
            {
                materialId   = x.Key,
                materialName = x.Max(item => item.materialName),
                mat_size     = x.Max(item => item.mat_size),
                count        = x.Sum(item => item.count),
                profit       = x.Sum(item => item.profit)
            }).OrderBy(x => x.count).Skip(start).Take(pager.recPerPage).ToList();
            List <OutRecordModel> returnResult = new List <OutRecordModel>();
            OutRecordModel        model        = null;

            foreach (var item in result1)
            {
                model              = new OutRecordModel();
                model.materialId   = item.materialId;
                model.materialName = item.materialName;
                model.mat_size     = item.mat_size;
                model.count        = item.count;
                model.profit       = item.profit;
                returnResult.Add(model);
            }
            return(returnResult);
        }
 public ActionResult SumIndex(Pager <List <OutRecordModel> > pgaer, OutRecordQuery condition)
 {
     ViewBag.condition = condition;
     return(View(pgaer));
 }