Example #1
0
        /// <summary>
        /// 生成报销单的where条件
        /// </summary>
        /// <param name="userInfo"></param>
        /// <returns></returns>
        private string GetWhere(ExpenseAccountSM sm, AccountVM userInfo, bool isFromApprove)
        {
            var sql = "";

            //根据不同的角色类型看到报销单也是不一样的
            switch ((RoleType)Enum.ToObject(typeof(RoleType), userInfo.RoleType))
            {
            case RoleType.Admin:
                break;

            case RoleType.CompanyManager:
                sql += string.Format("and ( b.CompanyId is null or b.CompanyId in ({0})  )", userInfo.CompanyIds);
                break;

            case RoleType.Area:
                sql += " and  a.Creater='" + userInfo.UserName + "'";
                break;

            case RoleType.Staff:
                sql += " and ( b.CompanyId in (" + userInfo.CompanyIds + ") or a.Creater='" + userInfo.UserName + "' ) ";
                break;
            }


            //根据不同的角色类型看到报销单也是不一样的
            switch ((RoleViewRightType)Enum.ToObject(typeof(RoleViewRightType), userInfo.ViewRightType))
            {
            case RoleViewRightType.All:
                break;

            case RoleViewRightType.Owner:
                sql += " and  a.Creater='" + userInfo.UserName + "'  ";
                break;

            case RoleViewRightType.OwnerAndCompany:
                sql += " and ( b.CompanyId in (" + userInfo.CompanyIds + ") or a.Creater='" + userInfo.UserName + "' ) ";
                break;
            }



            //根据角色进行分类的过滤
            //老板只能看5大类汇总
            //录入人和admin能看所有(admin是拥有父类的权限,录入人只有子类的权限,父类可以同时查看报表)
            sql += @" and  (b.CateId is null or b.CateId in (select * from dbo.FC_GetRoleChildrenCateIds('" + userInfo.RoleType + "')))   ";

            //添加部分特殊分类的逻辑
            if (!string.IsNullOrEmpty(userInfo.CateIds))
            {
                sql += @" and  b.CateId in(" + userInfo.CateIds + ")   ";
            }
            //审核的是不能看到草稿箱的
            if (isFromApprove)
            {
                sql += " and a.ApproveStatus != " + (int)ExpenseAccountApproveStatus.Created;
            }
            sql += sm.SearchSql;
            return(sql);
        }
Example #2
0
        public async Task <ActionResult> ToExcel(ExpenseAccountSM Sm)
        {
            var Dtos     = expenseAccountRepo.GetExcelListByDto(Sm, ViewHelp.UserInfo());
            var Vms      = Mapper.Map <List <ExpenseAccountExcelVM> >(Dtos);
            var FilePath = ExpenseAccountManager.Instance.ToExcel(Vms);

            Log(Vms, "路径:" + FilePath);
            return(File(new FileStream(FilePath, FileMode.Open), "application/octet-stream", "报销清单_" + ViewHelp.GetUserName() + "_" + DateTime.Now.ToString("yyyyMMddss") + ".xls"));
        }
Example #3
0
        public PagedResult <ExpenseAccountListDTO> GetListByDto(ExpenseAccountSM sm, AccountVM UserInfo, int Page, int PageSize, bool IsFromApprove = false)
        {
            var sql = @" select    distinct    @CompanyId   SearchCompanyId,a.EANumber, a.Id,a.ApproveStatus,a.ModifyDate,a.Name,a.SumMoney ,a.ApplyDate,a.Creater ,a.IsNotAccount,a.IsPublic from EM_ExpenseAccount a
left join EM_ExpenseAccount_Detail b on a.Id=b.ExpenseAccountId
where 1=1 ";

            sql += GetWhere(sm, UserInfo, IsFromApprove);
            var list = DapperHelper.QueryWithPage <ExpenseAccountListDTO>(sql, sm, " ModifyDate desc ", Page, PageSize);

            return(list);
        }
Example #4
0
        public List <ExpenseAccountExcelDTO> GetExcelListByDto(ExpenseAccountSM sm, AccountVM UserInfo)
        {
            var sql = @" select  b.OccurDate,a.Name,a.EANumber,c.CateName,b.Remark,b.Money  from EM_ExpenseAccount a
left join EM_ExpenseAccount_Detail b on a.Id=b.ExpenseAccountId
left join EM_Charge_Cate c on b.CateId=c.Id
where 1=1 ";

            sql += GetWhere(sm, UserInfo, false);
            sql += " order by a.ModifyDate desc  ";
            var list = DapperHelper.SqlQuery <ExpenseAccountExcelDTO>(sql, sm).ToList();

            return(list);
        }
Example #5
0
        public PagedResult <ExpenseAccountListDTO> GetLostAccountListByDto(ExpenseAccountSM sm, AccountVM UserInfo, int Page, int PageSize)
        {
            var sql = @" select    distinct    @CompanyId   SearchCompanyId,a.EANumber, a.Id,a.ApproveStatus,a.ModifyDate,a.Name,a.SumMoney ,a.ApplyDate,a.Creater ,a.IsNotAccount,a.IsPublic from EM_ExpenseAccount a
left join EM_ExpenseAccount_Detail b on a.Id=b.ExpenseAccountId
where  b.id is null ";

            if (UserInfo.RoleType != (int)RoleType.Admin)
            {
                sql += string.Format("  and a.Creater='{0}'" + UserInfo.UserName);
            }
            var list = DapperHelper.QueryWithPage <ExpenseAccountListDTO>(sql, sm, " ModifyDate desc ", Page, PageSize);

            return(list);
        }
Example #6
0
        public async Task <ActionResult> Index(ExpenseAccountSM Sm, int Page = 1, int PageSize = 20)
        {
            var Dtos = expenseAccountRepo.GetListByDto(Sm, ViewHelp.UserInfo(), Page, PageSize);
            var Vms  = new PagedResult <ExpenseAccountListVM>()
            {
                CurrentPage = Dtos.CurrentPage,
                PageSize    = Dtos.PageSize,
                RowCount    = Dtos.RowCount,
                Stats       = Dtos.Stats
            };

            Vms.Results = Mapper.Map <IList <ExpenseAccountListDTO>, IList <ExpenseAccountListVM> >(Dtos.Results);
            if (Request.IsAjaxRequest())
            {
                return(PartialView("_List", Vms));
            }
            InitSearchSelect();
            return(View(Vms));
        }
Example #7
0
        public async Task <ActionResult> ApproveIndex(ExpenseAccountSM Sm, int Page = 1, int PageSize = 20)
        {
            if (!Request.IsAjaxRequest())
            {
                Sm.ApproveStatus = (int)ExpenseAccountApproveStatus.WaitingApprove;
            }
            var Dtos = expenseAccountRepo.GetListByDto(Sm, ViewHelp.UserInfo(), Page, PageSize, true);
            var Vms  = new PagedResult <ExpenseAccountListVM>()
            {
                CurrentPage = Dtos.CurrentPage,
                PageSize    = Dtos.PageSize,
                RowCount    = Dtos.RowCount,
                Stats       = Dtos.Stats
            };

            Vms.Results = Mapper.Map <IList <ExpenseAccountListDTO>, IList <ExpenseAccountListVM> >(Dtos.Results);
            if (Request.IsAjaxRequest())
            {
                return(PartialView("_ApproveList", Vms));
            }
            InitSearchSelect(true, Sm.ApproveStatus.Value);
            return(View(Vms));
        }
Example #8
0
        public async Task <ActionResult> CompanyLimitDetail(ExpenseAccountSM Sm, int Page = 1, int PageSize = 20)
        {
            DateTime sDate, eDate;

            Sm.Year.GetDateByYear(out sDate, out eDate);
            Sm.SDate = sDate;
            Sm.EDate = eDate;
            if (!Sm.CompanyId.HasValue)
            {
                var CompanyList = companyRepo.GetList(ViewHelp.GetRoleId());
                Sm.CompanyId = CompanyList.FirstOrDefault().Key.ToInt();
            }
            if (!Sm.CateId.HasValue)
            {
                var CateList = changeCateRepo.GetList(ViewHelp.GetRoleType(), CateDropType.Search, ViewHelp.GetCateIds());
                Sm.CateId = CateList.FirstOrDefault().Key.ToInt();
            }
            Sm.IsNotAccount  = 0;
            Sm.ApproveStatus = (int)ExpenseAccountApproveStatus.PassApproved;
            var Dtos = expenseAccountRepo.GetListByDto(Sm, ViewHelp.UserInfo(), Page, PageSize);
            var Vms  = new PagedResult <ExpenseAccountListVM>()
            {
                CurrentPage = Dtos.CurrentPage,
                PageSize    = Dtos.PageSize,
                RowCount    = Dtos.RowCount,
                Stats       = Dtos.Stats
            };

            ViewBag.limit = companyLimitRepo.GetCompanyLimit(Sm.CompanyId.Value, Sm.CateId.Value, Sm.Year);
            Vms.Results   = Mapper.Map <IList <ExpenseAccountListDTO>, IList <ExpenseAccountListVM> >(Dtos.Results);
            if (Request.IsAjaxRequest())
            {
                return(PartialView("_CompanyLimitDetailList", Vms));
            }
            CompanyLimitInitSearchSelect();
            return(View(Vms));
        }