public CompanyCateLimitDTO GetCompanyLimit(int companyId, int cateId, int year) { DateTime sDate, eDate; year.GetDateByYear(out sDate, out eDate); var sm = new CompanyCateLimitSM() { CompanyId = companyId, CateId = cateId, SDate = sDate, EDate = eDate, }; var costList = GetCostList(companyId, cateId, sDate, eDate); //根据每个日期合计金额,下方报表用 var datelyCostList = from cost in costList group cost by new { cost.OccurDate } into m select new CompanyCateLimitDateDTO() { OccurDate = m.First().OccurDate, Money = m.Sum(o => o.Money) }; //根据每个日期预计合计金额,下方报表用 var dateExpectCostList = DapperHelper.SqlQuery <CompanyCateLimitDateDTO>(@"select case when SUM(Money) is null then 0 else SUM(Money) end as Money ,a.OccurDate from EM_ExpenseAccount_Detail a join EM_ExpenseAccount b on a.ExpenseAccountId=b.Id where a.CompanyId=@CompanyId and a.ExpenseAccountId<>0 and a.CateId in ( select * from dbo.FC_GetChildCateIds(@CateId) ) and a.OccurDate >@SDate and a.OccurDate<@EDate and b.ApproveStatus<>4 and( b.IsNotAccount is null or b.IsNotAccount =0) group by a.OccurDate", sm).ToList(); //获取公司类型,获取绩效额度的时候不一样 var totalCost = datelyCostList.Sum(o => o.Money); var expectTotalCost = dateExpectCostList.Sum(o => o.Money); //获取大类的额度类型和名称 var mainCate = DapperHelper.SqlQuery <EM_Charge_Cate>(@"select * from dbo.FC_GetParentCateInfo(@CateId)", sm).FirstOrDefault(); //获取额度 var totalLimit = GetLimit(companyId, cateId, year); var result = new CompanyCateLimitDTO() { CateId = cateId, CateName = mainCate.CateName, TotalCost = totalCost, TotalLimit = totalLimit, ExpectTotalCost = expectTotalCost, DateDetails = datelyCostList.ToList(), ExpectDateDetails = dateExpectCostList, }; return(result); }
public CompanyCateLimitDTO GetCompanysLimit(string companyIds, int cateId, int year) { var result = new CompanyCateLimitDTO(); foreach (var companyId in companyIds.ToInts()) { var tempLimit = GetCompanyLimit(companyId, cateId, year); result.CateName = tempLimit.CateName; result.TotalCost += tempLimit.TotalCost; result.ExpectTotalCost += tempLimit.ExpectTotalCost; result.TotalLimit += tempLimit.TotalLimit == 0 ? 1 : tempLimit.TotalLimit; result.DateDetails = tempLimit.DateDetails; result.ExpectDateDetails = tempLimit.ExpectDateDetails; } return(result); }