Commit fe27f18f authored by liudong1993's avatar liudong1993

1

parent 96102e51
......@@ -544,6 +544,9 @@ namespace Edu.Education.Helper
//financeModule.InsertBatchSimple_V2(100000, 2020);
financeModule.InsertBatchSimple_V2(100000, DateTime.Now.Year);
financeModule.InsertBatchSimple_V2(100000, DateTime.Now.Year - 1);
financeModule.InsertBatchSimple_V3(100000, DateTime.Now.Year);
financeModule.InsertBatchSimple_V3(100000, DateTime.Now.Year - 1);
Console.WriteLine("结束执行简易报表....");
LogHelper.Write("结束执行简易报表....");
}
......
......@@ -19,7 +19,7 @@ namespace Edu.Model.Entity.Finance
set;
}
/// <summary>
/// 1 团队营收 2 简易报表
/// 1 团队营收 2 简易报表 3 新版简易报表
/// </summary>
public int Type
{
......
......@@ -213,5 +213,10 @@ namespace Edu.Model.Entity.Finance
/// 费用类型
/// </summary>
public string CostTypeIds { get; set; }
/// <summary>
/// 报表类型 0正常 1新版报表 (教育使用)
/// </summary>
public int ExpectedType { get; set; }
}
}
......@@ -661,9 +661,9 @@ namespace Edu.Module.Finance
/// 获取最新记录
/// </summary>
/// <returns></returns>
public RB_Report_UpdateRecord GetUpdateRecordNew()
public RB_Report_UpdateRecord GetUpdateRecordNew(int Type = 1)
{
return edu_UpdateRecordRepository.GetList(new RB_Report_UpdateRecord() { Type = 1 }).FirstOrDefault();
return edu_UpdateRecordRepository.GetList(new RB_Report_UpdateRecord() { Type = Type }).FirstOrDefault();
}
/// <summary>
......@@ -1934,6 +1934,749 @@ namespace Edu.Module.Finance
return true;
}
/// <summary>
/// 新版本更新简易报表(全部按科目统计)
/// </summary>
/// <param name="GroupId"></param>
/// <param name="Year"></param>
/// <returns></returns>
public bool InsertBatchSimple_V3(int GroupId, int Year)
{
edu_UpdateRecordRepository.Insert(new RB_Report_UpdateRecord()
{
Type = 3,
StartDate = DateTime.Now
});
try
{
string sDate = Year + "-01-01";
string eDate = DateTime.Now.AddYears(1).AddDays(-1).ToString("yyyy-MM-dd");
#region 查询费用
var ctList = costtypeRepository.GetList(new RB_Costtype_Extend() { RB_Group_Id = GroupId });
//查询出分组的费用
List<int> groupList = ctList.Where(x => x.ReportType > 0 || (x.ReportType == 0 && x.ParentId == 0)).Select(x => x.ID).ToList();
//再查询出该下面 所有最下级的费用 需是进入报表统计的
List<ReportGroupModel> RGList = new List<ReportGroupModel>();
foreach (var item in groupList)
{
var nmodel = ctList.Where(x => x.ID == item).FirstOrDefault();
ReportGroupModel rgModel = new ReportGroupModel()
{
CostTypeId = item,
Name = nmodel.Name,
ReportType = nmodel.ReportType,
IncomeType = nmodel.Name.Contains("收入") ? 1 : 2,
Sort = nmodel.Sort ?? 0,
ChildList = new List<ReportChildModel>()
};
var qlist = ctList.Where(x => x.Is_Report == 1 && x.ParentId == item).ToList();
foreach (var qitem in qlist)
{
var qctList = ctList.Where(x => x.Is_Report == 1 && x.ParentId == qitem.ID).ToList();
if (qctList.Any())
{
rgModel.ChildList.AddRange(qctList.Select(x => new ReportChildModel()
{
CostTypeId = x.ID,
Name = x.Name,
Sort = x.Sort ?? 0
}));
}
else
{
rgModel.ChildList.Add(new ReportChildModel()
{
CostTypeId = qitem.ID,
Name = qitem.Name,
Sort = qitem.Sort ?? 0
});
}
}
RGList.Add(rgModel);
}
#endregion
//财务单据
var RZFinancelist = RB_FinanceRepository.GetListForReport(new RB_Finance_Extend() { sAduitDate = DateTime.Parse(sDate), eAduitDate = DateTime.Now.AddYears(1).AddDays(-1), RB_Branch_Id = -1, RB_Group_Id = GroupId, FinanceType = 2 });
//获取资金调拨单据
var CapitalAllocationFinanceList = RB_FinanceRepository.GetTradeWayForCapitalAllocation(new RB_Finance_Extend() { sAduitDate = DateTime.Parse(sDate), eAduitDate = DateTime.Now.AddYears(1).AddDays(-1), RB_Branch_Id = -1, RB_Group_Id = GroupId, Is_TCID = 1, TCID = -1 });
//查询校区
var schoolList = schoolRepository.GetSchoolListRepository(new Model.ViewModel.User.RB_School_ViewModel() { Group_Id = GroupId });
List<string> shareList = new List<string>() { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12" };
List<RB_SimpleReport> AllSchoolReportList = new List<RB_SimpleReport>();
foreach (var branchitem in schoolList)
{
Console.WriteLine("校区:" + branchitem.SName);
List<RB_SimpleReport> SchoolReportList = new List<RB_SimpleReport>();
#region 班级统计
RB_SimpleReport IncomeReport = new RB_SimpleReport() { Year = Year, Abstract = "展示课耗收入", Rb_Group_Id = GroupId, Sort = 1, BranchId = branchitem.SId, CostTypeIds = "" };
//以下作废
RB_SimpleReport OtherIncomeReport = new RB_SimpleReport() { Year = Year, Abstract = "其他收入", Rb_Group_Id = GroupId, Sort = 2, BranchId = branchitem.SId, CostTypeIds = "" };
RB_SimpleReport BonusReport = new RB_SimpleReport() { Year = Year, Abstract = "课时费", Rb_Group_Id = GroupId, Sort = 3, BranchId = branchitem.SId, CostTypeIds = "" };
RB_SimpleReport PerfReport = new RB_SimpleReport() { Year = Year, Abstract = "返佣", Rb_Group_Id = GroupId, Sort = 4, BranchId = branchitem.SId, CostTypeIds = "" };
RB_SimpleReport SellReport = new RB_SimpleReport() { Year = Year, Abstract = "销售提成", Rb_Group_Id = GroupId, Sort = 5, BranchId = branchitem.SId, CostTypeIds = "" };
RB_SimpleReport PeopleReport = new RB_SimpleReport() { Year = Year, Abstract = "人头奖励", Rb_Group_Id = GroupId, Sort = 5, BranchId = branchitem.SId, CostTypeIds = "" };
RB_SimpleReport OtherCostReport = new RB_SimpleReport() { Year = Year, Abstract = "其他成本", Rb_Group_Id = GroupId, Sort = 6, BranchId = branchitem.SId, CostTypeIds = "" };
RB_SimpleReport TotalReport = new RB_SimpleReport() { Year = Year, Abstract = "营业总毛利", Rb_Group_Id = GroupId, Sort = 7, BranchId = branchitem.SId, CostTypeIds = "" };
foreach (var month in shareList)
{
string startTime = Year + "-" + month + "-01";
string endTime = Convert.ToDateTime(Year + "-" + month + "-01").AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
#region 最新班级
//查询课耗
//根据学生签到表 查询
var stulist = class_CheckRepository.GetStudentConsumptionHoursDetialList(0, branchitem.SId, 0, startTime, endTime, "", 0, "", GroupId);
decimal StuKHMoney = stulist.Sum(x => Math.Round(x.UnitPrice * x.CurrentDeductionHours, 6, MidpointRounding.AwayFromZero));
//课时费 提成 书本费收入(OtherIncome)
//查询课时费
decimal WBonusMoney = 0;
//查询业绩提成
decimal sellCommission = 0;
decimal SellMoney = 0;//销售提成
sellCommission += SellMoney;
//查询返佣
decimal ReturnMoney = 0;
//查询书本费收入 暂存 1159 = 书本费科目
//当月的财务单据
decimal bookIncome = 0;
#region 单据
decimal OtherIncome = 0;
decimal Fee = 0;
OtherIncome -= Fee;
decimal OtherCost = 0;//支出也要排除订单订单退款
bookIncome += OtherIncome;
#endregion
//查询人头奖励
decimal PeopleBonus = 0;
UpdateClassReportDate(TotalReport, IncomeReport, OtherIncomeReport, BonusReport, PerfReport, SellReport, PeopleReport, OtherCostReport, month, StuKHMoney, WBonusMoney, ReturnMoney, sellCommission, bookIncome, OtherCost, PeopleBonus);
#endregion
}
Console.WriteLine("班级OK");
#endregion
#region 主营业务
var ZYList = RGList.Where(x => x.ReportType == 0).OrderBy(x => x.Sort).ThenBy(x => x.CostTypeId).ToList();
List<RB_SimpleReport> ZYReport = new List<RB_SimpleReport>();
//初始赋值营业总毛利
RB_SimpleReport zTotalReport = new RB_SimpleReport()
{
Year = Year,
Abstract = "营业总毛利",
Rb_Group_Id = GroupId,
Sort = 0,
BranchId = branchitem.SId,
CostTypeIds = "",
};//管销费用
int i = 2;
foreach (var gitem in ZYList)
{
RB_SimpleReport groupReport = new RB_SimpleReport() { Year = Year, Abstract = gitem.Name + "小计", Rb_Group_Id = GroupId, Sort = 0, BranchId = branchitem.SId, CostTypeIds = string.Join(",", gitem.ChildList.Select(x => x.CostTypeId)) };
foreach (var qitem in gitem.ChildList.OrderBy(x => x.Sort).ThenBy(x => x.CostTypeId))
{
//子集具体费用
RB_SimpleReport fReport = new RB_SimpleReport() { Year = Year, Abstract = qitem.Name, Rb_Group_Id = GroupId, Sort = i, BranchId = branchitem.SId, CostTypeIds = qitem.CostTypeId.ToString() };
foreach (var month in shareList)
{
sDate = Convert.ToDateTime(Year + "-" + month + "-01").ToString("yyyy-MM-dd");
eDate = DateTime.Parse((Year + "-" + month + "-01")).AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
decimal FYMoney = 0;
#region 日常费用
//当月的财务单据
var Financelist = RZFinancelist.Where(x => x.CostTypeId == qitem.CostTypeId && ((x.Type == WFTempLateClassEnum.OUT && x.CreateDate.Value.ToString("yyyy-MM") == Convert.ToDateTime(sDate).ToString("yyyy-MM")) || (x.Type != WFTempLateClassEnum.OUT && x.TradeDate.Value.ToString("yyyy-MM") == Convert.ToDateTime(sDate).ToString("yyyy-MM"))) && x.RB_Branch_Id == branchitem.SId).ToList();
//获取收入和支出
var cfinanceList = Financelist.Where(x => x.Type == WFTempLateClassEnum.IN).ToList();
decimal ShouRu = cfinanceList.Where(y => y.Is_Cashier == 1).Sum(x => x.Money ?? 0);
ShouRu -= cfinanceList.Where(x => x.Is_Cashier == 1 && x.Fee > 0).GroupBy(x => new { x.FrID, x.Fee }).Sum(x => x.Key.Fee ?? 0);
//支出
var ofinanceList = Financelist.Where(x => x.Type == WFTempLateClassEnum.OUT).ToList();
decimal ZhiChu = ofinanceList.Sum(x => x.Money ?? 0);
if (gitem.IncomeType == 2)
{
FYMoney = ZhiChu - ShouRu;
}
else
{
FYMoney = ShouRu - ZhiChu;
}
#endregion
#region 预付款处理
if (qitem.Name.Contains("预付"))
{
//预付款 冲抵
var MatchList = Financelist.Where(x => x.MatchMoney > 0).ToList();
if (MatchList.Any())
{
//减去冲抵的金额
var newFList = MatchList.Select(x => x.FrID).Distinct().ToList();
decimal DelMoney = 0;
foreach (var item in newFList)
{
DelMoney += MatchList.Where(x => x.FrID == item).FirstOrDefault()?.MatchMoney ?? 0;
}
FYMoney -= DelMoney;
}
}
#endregion
#region 资金调拨汇兑损益
if (qitem.Name == "汇兑损益")
{
var calist = CapitalAllocationFinanceList.Where(x => x.AllotDate.Value.ToString("yyyy-MM") == Convert.ToDateTime(sDate).ToString("yyyy-MM") && x.BranchId == branchitem.SId).ToList();
//资金调拨的汇兑损益
decimal iMoney = calist.Where(x => x.AllotType == 1)?.Sum(x => x.Money ?? 0) ?? 0;
decimal oMoney = calist.Where(x => x.AllotType == 2)?.Sum(x => x.Money ?? 0) ?? 0;
FYMoney += oMoney - iMoney;
}
#endregion
switch (month)
{
case "01":
fReport.January = FYMoney; groupReport.January += FYMoney; if (gitem.IncomeType == 1) zTotalReport.January += FYMoney; else zTotalReport.January -= FYMoney;
break;
case "02":
fReport.February = FYMoney; groupReport.February += FYMoney; if (gitem.IncomeType == 1) zTotalReport.February += FYMoney; else zTotalReport.February -= FYMoney;
break;
case "03":
fReport.March = FYMoney; groupReport.March += FYMoney; if (gitem.IncomeType == 1) zTotalReport.March += FYMoney; else zTotalReport.March -= FYMoney;
break;
case "04":
fReport.April = FYMoney; groupReport.April += FYMoney; if (gitem.IncomeType == 1) zTotalReport.April += FYMoney; else zTotalReport.April -= FYMoney;
break;
case "05":
fReport.May = FYMoney; groupReport.May += FYMoney; if (gitem.IncomeType == 1) zTotalReport.May += FYMoney; else zTotalReport.May -= FYMoney;
break;
case "06":
fReport.June = FYMoney; groupReport.June += FYMoney; if (gitem.IncomeType == 1) zTotalReport.June += FYMoney; else zTotalReport.June -= FYMoney;
break;
case "07":
fReport.July = FYMoney; groupReport.July += FYMoney; if (gitem.IncomeType == 1) zTotalReport.July += FYMoney; else zTotalReport.July -= FYMoney;
break;
case "08":
fReport.August = FYMoney; groupReport.August += FYMoney; if (gitem.IncomeType == 1) zTotalReport.August += FYMoney; else zTotalReport.August -= FYMoney;
break;
case "09":
fReport.September = FYMoney; groupReport.September += FYMoney; if (gitem.IncomeType == 1) zTotalReport.September += FYMoney; else zTotalReport.September -= FYMoney;
break;
case "10":
fReport.October = FYMoney; groupReport.October += FYMoney; if (gitem.IncomeType == 1) zTotalReport.October += FYMoney; else zTotalReport.October -= FYMoney;
break;
case "11":
fReport.November = FYMoney; groupReport.November += FYMoney; if (gitem.IncomeType == 1) zTotalReport.November += FYMoney; else zTotalReport.November -= FYMoney;
break;
case "12":
fReport.December = FYMoney; groupReport.December += FYMoney; if (gitem.IncomeType == 1) zTotalReport.December += FYMoney; else zTotalReport.December -= FYMoney;
break;
}
}
i++;
ZYReport.Add(fReport);
}
groupReport.Sort = i; i++;
ZYReport.Add(groupReport);
}
zTotalReport.Sort = i; i++;
ZYReport.Add(zTotalReport);
Console.WriteLine("主营业务OK");
#endregion
#region 费用模块
var FYList = RGList.Where(x => x.ReportType == 1).OrderBy(x => x.Sort).ThenBy(x => x.CostTypeId).ToList();
List<RB_SimpleReport> FYReport = new List<RB_SimpleReport>();
//初始赋值营业总毛利
RB_SimpleReport fTotalReport = new RB_SimpleReport()
{
Year = Year,
Abstract = "营业利润(亏损)",
Rb_Group_Id = GroupId,
Sort = 0,
BranchId = branchitem.SId,
CostTypeIds = "",
April = zTotalReport.April,
August = zTotalReport.August,
December = zTotalReport.December,
February = zTotalReport.February,
FirstQuarter = zTotalReport.FourthQuarter,
FourthQuarter = zTotalReport.FourthQuarter,
HalfReport = zTotalReport.HalfReport,
January = zTotalReport.January,
July = zTotalReport.July,
June = zTotalReport.June,
LastHalfReport = zTotalReport.LastHalfReport,
March = zTotalReport.March,
May = zTotalReport.May,
November = zTotalReport.November,
October = zTotalReport.October,
SecondQuarter = zTotalReport.SecondQuarter,
September = zTotalReport.September,
ThirdQuarter = zTotalReport.ThirdQuarter,
Total = zTotalReport.Total
};//管销费用
foreach (var gitem in FYList)
{
RB_SimpleReport groupReport = new RB_SimpleReport() { Year = Year, Abstract = gitem.Name + "小计", Rb_Group_Id = GroupId, Sort = 0, BranchId = branchitem.SId, CostTypeIds = string.Join(",", gitem.ChildList.Select(x => x.CostTypeId)) };
foreach (var qitem in gitem.ChildList.OrderBy(x => x.Sort).ThenBy(x => x.CostTypeId))
{
//子集具体费用
RB_SimpleReport fReport = new RB_SimpleReport() { Year = Year, Abstract = qitem.Name, Rb_Group_Id = GroupId, Sort = i, BranchId = branchitem.SId, CostTypeIds = qitem.CostTypeId.ToString() };
foreach (var month in shareList)
{
sDate = Convert.ToDateTime(Year + "-" + month + "-01").ToString("yyyy-MM-dd");
eDate = DateTime.Parse((Year + "-" + month + "-01")).AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
decimal FYMoney = 0;
#region 日常费用
//当月的财务单据
var Financelist = RZFinancelist.Where(x => x.CostTypeId == qitem.CostTypeId && ((x.Type == WFTempLateClassEnum.OUT && x.CreateDate.Value.ToString("yyyy-MM") == Convert.ToDateTime(sDate).ToString("yyyy-MM")) || (x.Type != WFTempLateClassEnum.OUT && x.TradeDate.Value.ToString("yyyy-MM") == Convert.ToDateTime(sDate).ToString("yyyy-MM"))) && x.RB_Branch_Id == branchitem.SId).ToList();
//获取收入和支出
var cfinanceList = Financelist.Where(x => x.Type == WFTempLateClassEnum.IN).ToList();
decimal ShouRu = cfinanceList.Where(y => y.Is_Cashier == 1).Sum(x => x.Money ?? 0);
ShouRu -= cfinanceList.Where(x => x.Is_Cashier == 1 && x.Fee > 0).GroupBy(x => new { x.FrID, x.Fee }).Sum(x => x.Key.Fee ?? 0);
//支出
var ofinanceList = Financelist.Where(x => x.Type == WFTempLateClassEnum.OUT).ToList();
decimal ZhiChu = ofinanceList.Sum(x => x.Money ?? 0);
if (gitem.IncomeType == 2)
{
FYMoney = ZhiChu - ShouRu;
}
else
{
FYMoney = ShouRu - ZhiChu;
}
#endregion
#region 预付款处理
if (qitem.Name.Contains("预付"))
{
//预付款 冲抵
var MatchList = Financelist.Where(x => x.MatchMoney > 0).ToList();
if (MatchList.Any())
{
//减去冲抵的金额
var newFList = MatchList.Select(x => x.FrID).Distinct().ToList();
decimal DelMoney = 0;
foreach (var item in newFList)
{
DelMoney += MatchList.Where(x => x.FrID == item).FirstOrDefault()?.MatchMoney ?? 0;
}
FYMoney -= DelMoney;
}
}
#endregion
#region 资金调拨汇兑损益
if (qitem.Name == "汇兑损益")
{
var calist = CapitalAllocationFinanceList.Where(x => x.AllotDate.Value.ToString("yyyy-MM") == Convert.ToDateTime(sDate).ToString("yyyy-MM") && x.BranchId == branchitem.SId).ToList();
//资金调拨的汇兑损益
decimal iMoney = calist.Where(x => x.AllotType == 1)?.Sum(x => x.Money ?? 0) ?? 0;
decimal oMoney = calist.Where(x => x.AllotType == 2)?.Sum(x => x.Money ?? 0) ?? 0;
FYMoney += oMoney - iMoney;
}
#endregion
switch (month)
{
case "01":
fReport.January = FYMoney; groupReport.January += FYMoney; if (gitem.IncomeType == 1) fTotalReport.January += FYMoney; else fTotalReport.January -= FYMoney;
break;
case "02":
fReport.February = FYMoney; groupReport.February += FYMoney; if (gitem.IncomeType == 1) fTotalReport.February += FYMoney; else fTotalReport.February -= FYMoney;
break;
case "03":
fReport.March = FYMoney; groupReport.March += FYMoney; if (gitem.IncomeType == 1) fTotalReport.March += FYMoney; else fTotalReport.March -= FYMoney;
break;
case "04":
fReport.April = FYMoney; groupReport.April += FYMoney; if (gitem.IncomeType == 1) fTotalReport.April += FYMoney; else fTotalReport.April -= FYMoney;
break;
case "05":
fReport.May = FYMoney; groupReport.May += FYMoney; if (gitem.IncomeType == 1) fTotalReport.May += FYMoney; else fTotalReport.May -= FYMoney;
break;
case "06":
fReport.June = FYMoney; groupReport.June += FYMoney; if (gitem.IncomeType == 1) fTotalReport.June += FYMoney; else fTotalReport.June -= FYMoney;
break;
case "07":
fReport.July = FYMoney; groupReport.July += FYMoney; if (gitem.IncomeType == 1) fTotalReport.July += FYMoney; else fTotalReport.July -= FYMoney;
break;
case "08":
fReport.August = FYMoney; groupReport.August += FYMoney; if (gitem.IncomeType == 1) fTotalReport.August += FYMoney; else fTotalReport.August -= FYMoney;
break;
case "09":
fReport.September = FYMoney; groupReport.September += FYMoney; if (gitem.IncomeType == 1) fTotalReport.September += FYMoney; else fTotalReport.September -= FYMoney;
break;
case "10":
fReport.October = FYMoney; groupReport.October += FYMoney; if (gitem.IncomeType == 1) fTotalReport.October += FYMoney; else fTotalReport.October -= FYMoney;
break;
case "11":
fReport.November = FYMoney; groupReport.November += FYMoney; if (gitem.IncomeType == 1) fTotalReport.November += FYMoney; else fTotalReport.November -= FYMoney;
break;
case "12":
fReport.December = FYMoney; groupReport.December += FYMoney; if (gitem.IncomeType == 1) fTotalReport.December += FYMoney; else fTotalReport.December -= FYMoney;
break;
}
}
i++;
FYReport.Add(fReport);
}
groupReport.Sort = i; i++;
FYReport.Add(groupReport);
}
fTotalReport.Sort = i; i++;
FYReport.Add(fTotalReport);
Console.WriteLine("费用OK");
RB_SimpleReport NotReport = new RB_SimpleReport() { Year = Year, Abstract = "以下项均不计入计算", Rb_Group_Id = GroupId, Sort = 0, BranchId = branchitem.SId, CostTypeIds = "" };
NotReport.Sort = i; i++;
#endregion
#region 往来模块
var WLList = RGList.Where(x => x.ReportType == 2).OrderBy(x => x.Sort).ThenBy(x => x.CostTypeId).ToList();
List<RB_SimpleReport> WLReport = new List<RB_SimpleReport>();
foreach (var gitem in WLList)
{
RB_SimpleReport groupReport = new RB_SimpleReport() { Year = Year, Abstract = gitem.Name + "小计", Rb_Group_Id = GroupId, Sort = 0, BranchId = branchitem.SId, CostTypeIds = string.Join(",", gitem.ChildList.Select(x => x.CostTypeId)) };
foreach (var qitem in gitem.ChildList.OrderBy(x => x.Sort).ThenBy(x => x.CostTypeId))
{
//子集具体费用
RB_SimpleReport fReport = new RB_SimpleReport() { Year = Year, Abstract = qitem.Name, Rb_Group_Id = GroupId, Sort = i, BranchId = branchitem.SId, CostTypeIds = qitem.CostTypeId.ToString() };
foreach (var month in shareList)
{
sDate = Convert.ToDateTime(Year + "-" + month + "-01").ToString("yyyy-MM-dd");
eDate = DateTime.Parse((Year + "-" + month + "-01")).AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
decimal FYMoney = 0;
#region 日常费用
//当月的财务单据
var Financelist = RZFinancelist.Where(x => x.CostTypeId == qitem.CostTypeId && ((x.Type == WFTempLateClassEnum.OUT && x.CreateDate.Value.ToString("yyyy-MM") == Convert.ToDateTime(sDate).ToString("yyyy-MM")) || (x.Type != WFTempLateClassEnum.OUT && x.TradeDate.Value.ToString("yyyy-MM") == Convert.ToDateTime(sDate).ToString("yyyy-MM"))) && x.RB_Branch_Id == branchitem.SId).ToList();
//获取收入和支出
var cfinanceList = Financelist.Where(x => x.Type == WFTempLateClassEnum.IN).ToList();
decimal ShouRu = cfinanceList.Where(y => y.Is_Cashier == 1).Sum(x => x.Money ?? 0);
ShouRu -= cfinanceList.Where(x => x.Is_Cashier == 1 && x.Fee > 0).GroupBy(x => new { x.FrID, x.Fee }).Sum(x => x.Key.Fee ?? 0);
//支出
var ofinanceList = Financelist.Where(x => x.Type == WFTempLateClassEnum.OUT).ToList();
decimal ZhiChu = ofinanceList.Sum(x => x.Money ?? 0);
if (gitem.IncomeType == 2)
{
FYMoney = ZhiChu - ShouRu;
}
else
{
FYMoney = ShouRu - ZhiChu;
}
#endregion
#region 预付款处理
if (qitem.Name.Contains("预付"))
{
//预付款 冲抵
var MatchList = Financelist.Where(x => x.MatchMoney > 0).ToList();
if (MatchList.Any())
{
//减去冲抵的金额
var newFList = MatchList.Select(x => x.FrID).Distinct().ToList();
decimal DelMoney = 0;
foreach (var item in newFList)
{
DelMoney += MatchList.Where(x => x.FrID == item).FirstOrDefault()?.MatchMoney ?? 0;
}
FYMoney -= DelMoney;
}
}
#endregion
#region 资金调拨汇兑损益
if (qitem.Name == "汇兑损益")
{
var calist = CapitalAllocationFinanceList.Where(x => x.AllotDate.Value.ToString("yyyy-MM") == Convert.ToDateTime(sDate).ToString("yyyy-MM") && x.BranchId == branchitem.SId).ToList();
//资金调拨的汇兑损益
decimal iMoney = calist.Where(x => x.AllotType == 1)?.Sum(x => x.Money ?? 0) ?? 0;
decimal oMoney = calist.Where(x => x.AllotType == 2)?.Sum(x => x.Money ?? 0) ?? 0;
FYMoney += oMoney - iMoney;
}
#endregion
RB_SimpleReport cfReport = new RB_SimpleReport();
switch (month)
{
case "01":
fReport.January = FYMoney; groupReport.January += FYMoney;
break;
case "02":
fReport.February = FYMoney; groupReport.February += FYMoney;
break;
case "03":
fReport.March = FYMoney; groupReport.March += FYMoney;
break;
case "04":
fReport.April = FYMoney; groupReport.April += FYMoney;
break;
case "05":
fReport.May = FYMoney; groupReport.May += FYMoney;
break;
case "06":
fReport.June = FYMoney; groupReport.June += FYMoney;
break;
case "07":
fReport.July = FYMoney; groupReport.July += FYMoney;
break;
case "08":
fReport.August = FYMoney; groupReport.August += FYMoney;
break;
case "09":
fReport.September = FYMoney; groupReport.September += FYMoney;
break;
case "10":
fReport.October = FYMoney; groupReport.October += FYMoney;
break;
case "11":
fReport.November = FYMoney; groupReport.November += FYMoney;
break;
case "12":
fReport.December = FYMoney; groupReport.December += FYMoney;
break;
}
}
i++;
WLReport.Add(fReport);
}
groupReport.Sort = i; i++;
WLReport.Add(groupReport);
}
Console.WriteLine("往来OK");
#endregion
#region 其他模块
var QTList = RGList.Where(x => x.ReportType == 3).OrderBy(x => x.Sort).ThenBy(x => x.CostTypeId).ToList();
List<RB_SimpleReport> QTReport = new List<RB_SimpleReport>();
foreach (var gitem in QTList)
{
RB_SimpleReport groupReport = new RB_SimpleReport() { Year = Year, Abstract = gitem.Name + "小计", Rb_Group_Id = GroupId, Sort = 0, BranchId = branchitem.SId, CostTypeIds = string.Join(",", gitem.ChildList.Select(x => x.CostTypeId)) };
foreach (var qitem in gitem.ChildList.OrderBy(x => x.Sort).ThenBy(x => x.CostTypeId))
{
//子集具体费用
RB_SimpleReport fReport = new RB_SimpleReport() { Year = Year, Abstract = qitem.Name, Rb_Group_Id = GroupId, Sort = i, BranchId = branchitem.SId, CostTypeIds = qitem.CostTypeId.ToString() };
foreach (var month in shareList)
{
sDate = Convert.ToDateTime(Year + "-" + month + "-01").ToString("yyyy-MM-dd");
eDate = DateTime.Parse((Year + "-" + month + "-01")).AddMonths(1).AddDays(-1).ToString("yyyy-MM-dd");
decimal FYMoney = 0;
#region 日常费用
//当月的财务单据
var Financelist = RZFinancelist.Where(x => x.CostTypeId == qitem.CostTypeId && ((x.Type == WFTempLateClassEnum.OUT && x.CreateDate.Value.ToString("yyyy-MM") == Convert.ToDateTime(sDate).ToString("yyyy-MM")) || (x.Type != WFTempLateClassEnum.OUT && x.TradeDate.Value.ToString("yyyy-MM") == Convert.ToDateTime(sDate).ToString("yyyy-MM"))) && x.RB_Branch_Id == branchitem.SId).ToList();
//获取收入和支出
var cfinanceList = Financelist.Where(x => x.Type == WFTempLateClassEnum.IN).ToList();
decimal ShouRu = cfinanceList.Where(y => y.Is_Cashier == 1).Sum(x => x.Money ?? 0);
ShouRu -= cfinanceList.Where(x => x.Is_Cashier == 1 && x.Fee > 0).GroupBy(x => new { x.FrID, x.Fee }).Sum(x => x.Key.Fee ?? 0);
//支出
var ofinanceList = Financelist.Where(x => x.Type == WFTempLateClassEnum.OUT).ToList();
decimal ZhiChu = ofinanceList.Sum(x => x.Money ?? 0);
if (gitem.IncomeType == 2)
{
FYMoney = ZhiChu - ShouRu;
}
else
{
FYMoney = ShouRu - ZhiChu;
}
#endregion
#region 预付款处理
if (qitem.Name.Contains("预付"))
{
//预付款 冲抵
var MatchList = Financelist.Where(x => x.MatchMoney > 0).ToList();
if (MatchList.Any())
{
//减去冲抵的金额
var newFList = MatchList.Select(x => x.FrID).Distinct().ToList();
decimal DelMoney = 0;
foreach (var item in newFList)
{
DelMoney += MatchList.Where(x => x.FrID == item).FirstOrDefault()?.MatchMoney ?? 0;
}
FYMoney -= DelMoney;
}
}
#endregion
#region 资金调拨汇兑损益
if (qitem.Name == "汇兑损益")
{
var calist = CapitalAllocationFinanceList.Where(x => x.AllotDate.Value.ToString("yyyy-MM") == Convert.ToDateTime(sDate).ToString("yyyy-MM") && x.BranchId == branchitem.SId).ToList();
//资金调拨的汇兑损益
decimal iMoney = calist.Where(x => x.AllotType == 1)?.Sum(x => x.Money ?? 0) ?? 0;
decimal oMoney = calist.Where(x => x.AllotType == 2)?.Sum(x => x.Money ?? 0) ?? 0;
FYMoney += oMoney - iMoney;
}
#endregion
switch (month)
{
case "01":
fReport.January = FYMoney; groupReport.January += FYMoney;
break;
case "02":
fReport.February = FYMoney; groupReport.February += FYMoney;
break;
case "03":
fReport.March = FYMoney; groupReport.March += FYMoney;
break;
case "04":
fReport.April = FYMoney; groupReport.April += FYMoney;
break;
case "05":
fReport.May = FYMoney; groupReport.May += FYMoney;
break;
case "06":
fReport.June = FYMoney; groupReport.June += FYMoney;
break;
case "07":
fReport.July = FYMoney; groupReport.July += FYMoney;
break;
case "08":
fReport.August = FYMoney; groupReport.August += FYMoney;
break;
case "09":
fReport.September = FYMoney; groupReport.September += FYMoney;
break;
case "10":
fReport.October = FYMoney; groupReport.October += FYMoney;
break;
case "11":
fReport.November = FYMoney; groupReport.November += FYMoney;
break;
case "12":
fReport.December = FYMoney; groupReport.December += FYMoney;
break;
}
}
i++;
QTReport.Add(fReport);
}
groupReport.Sort = i; i++;
QTReport.Add(groupReport);
}
Console.WriteLine("其他OK");
#endregion
#region 计算统计
SchoolReportList.Add(IncomeReport);
//SchoolReportList.Add(OtherIncomeReport);
//SchoolReportList.Add(BonusReport);
//SchoolReportList.Add(PerfReport);
//SchoolReportList.Add(SellReport);
//SchoolReportList.Add(PeopleReport);
//SchoolReportList.Add(OtherCostReport);
//SchoolReportList.Add(TotalReport);
SchoolReportList.Add(NotReport);
SchoolReportList.AddRange(ZYReport);
SchoolReportList.AddRange(FYReport);
SchoolReportList.AddRange(WLReport);
SchoolReportList.AddRange(QTReport);
SchoolReportList.ForEach(x =>
{
x.FirstQuarter = x.January + x.February + x.March;
x.SecondQuarter = x.April + x.May + x.June;
x.ThirdQuarter = x.July + x.August + x.September;
x.FourthQuarter = x.October + x.November + x.December;
x.HalfReport = x.FirstQuarter + x.SecondQuarter;
x.LastHalfReport = x.ThirdQuarter + x.FourthQuarter;
x.Total = x.HalfReport + x.LastHalfReport;
});
AllSchoolReportList.AddRange(SchoolReportList);
#endregion
}
if (AllSchoolReportList.Any())
{
Console.WriteLine("开始汇总插入:" + AllSchoolReportList.Count());
//计算汇总
var HZList = AllSchoolReportList.GroupBy(x => new { x.Year, x.Abstract, x.Rb_Group_Id, x.Sort, x.CostTypeIds }).Select(x => new RB_SimpleReport_Extend()
{
ID = 0,
Rb_Group_Id = x.Key.Rb_Group_Id,
Year = x.Key.Year,
Abstract = x.Key.Abstract,
April = x.Sum(y => y.April),
August = x.Sum(y => y.August),
BranchId = -1,
CostTypeIds = x.Key.CostTypeIds,
December = x.Sum(y => y.December),
February = x.Sum(y => y.February),
FirstQuarter = x.Sum(y => y.FirstQuarter),
FourthQuarter = x.Sum(z => z.FourthQuarter),
HalfReport = x.Sum(z => z.HalfReport),
January = x.Sum(z => z.January),
July = x.Sum(z => z.July),
June = x.Sum(z => z.June),
LastHalfReport = x.Sum(z => z.LastHalfReport),
March = x.Sum(z => z.March),
May = x.Sum(z => z.May),
November = x.Sum(z => z.November),
October = x.Sum(z => z.October),
SecondQuarter = x.Sum(z => z.SecondQuarter),
September = x.Sum(z => z.September),
Sort = x.Key.Sort,
ThirdQuarter = x.Sum(z => z.ThirdQuarter),
Total = x.Sum(z => z.Total)
}).ToList();
AllSchoolReportList.AddRange(HZList);
var OldList = edu_simpleReportRepository.GetList(new RB_SimpleReport_Extend() { Year = Year, Rb_Group_Id = GroupId, BranchId = -2 }, 1);//查询所有的
foreach (var item in AllSchoolReportList)
{
item.ExpectedType = 1;
var oldModel = OldList.Where(x => x.Year == item.Year && x.Abstract == item.Abstract && x.BranchId == item.BranchId).FirstOrDefault();
if (oldModel == null)
{
edu_simpleReportRepository.Insert(item);
}
else
{
item.ID = oldModel.ID;
edu_simpleReportRepository.Update(item);
oldModel.IsUpdate = 1;
}
}
var delList = OldList.Where(x => x.IsUpdate == 0).ToList();
edu_simpleReportRepository.DeleteBatch(delList);
Console.WriteLine("汇总OK");
}
var fumodel = edu_UpdateRecordRepository.GetList(new RB_Report_UpdateRecord() { Type = 3 }).FirstOrDefault();
if (fumodel != null)
{
fumodel.EndDate = DateTime.Now;
edu_UpdateRecordRepository.Update(fumodel);
}
return true;
}
catch (Exception ex)
{
LogHelper.Write(ex, "InsertBatchSimple_V2");
}
return true;
}
/// <summary>
/// 更新班级数据
/// </summary>
......@@ -2084,7 +2827,7 @@ namespace Edu.Module.Finance
/// <returns></returns>
public List<RB_SimpleReport_Extend> GetEasyReportList(RB_SimpleReport_Extend model)
{
var list = edu_simpleReportRepository.GetList(model);
var list = edu_simpleReportRepository.GetList(model, model.ExpectedType);
return list;
}
......
......@@ -16,10 +16,11 @@ namespace Edu.Repository.Finance
/// 获取列表
/// </summary>
/// <param name="model"></param>
/// <param name="ExpectedType"> 0正常 1预收报表</param>
/// <returns></returns>
public List<RB_SimpleReport_Extend> GetList(RB_SimpleReport_Extend model)
public List<RB_SimpleReport_Extend> GetList(RB_SimpleReport_Extend model, int ExpectedType = 0)
{
string where = " 1=1 ";
string where = $" 1=1 and A.ExpectedType ={ExpectedType}";
if (model.Year > 0)
{
where += string.Format(" AND A." + nameof(RB_SimpleReport_Extend.Year) + "=" + model.Year);
......
......@@ -1201,9 +1201,9 @@ namespace Edu.WebApi.Controllers.Finance
var userInfo = base.UserInfo;
var model = JsonHelper.DeserializeObject<RB_SimpleReport_Extend>(RequestParm.Msg.ToString());
model.Rb_Group_Id = userInfo.Group_Id;
var list = financeModule.GetEasyReportList(new RB_SimpleReport_Extend() { Year = model.Year, Rb_Group_Id = userInfo.Group_Id, BranchId = model.BranchId });
var list = financeModule.GetEasyReportList(new RB_SimpleReport_Extend() { Year = model.Year, Rb_Group_Id = userInfo.Group_Id, BranchId = model.BranchId, ExpectedType = model.ExpectedType });
var fumodel = financeModule.GetUpdateRecordNew();
var fumodel = financeModule.GetUpdateRecordNew(model.ExpectedType == 1 ? 3 : 2);
int Status = 0;
string UpdateStartTime = "";
string UpdateEndTime = "";
......@@ -1266,7 +1266,7 @@ namespace Edu.WebApi.Controllers.Finance
var userInfo = base.UserInfo;
var model = JsonHelper.DeserializeObject<RB_SimpleReport_Extend>(RequestParm.Msg.ToString());
model.Rb_Group_Id = userInfo.Group_Id;
var list = financeModule.GetEasyReportList(new RB_SimpleReport_Extend() { Year = model.Year, Rb_Group_Id = userInfo.Group_Id, BranchId = model.BranchId });
var list = financeModule.GetEasyReportList(new RB_SimpleReport_Extend() { Year = model.Year, Rb_Group_Id = userInfo.Group_Id, BranchId = model.BranchId, ExpectedType = model.ExpectedType });
try
{
foreach (var sitem in list)
......
......@@ -2,7 +2,7 @@
"ConnectionStrings": {
"DefaultConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=reborn_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DefaultConnectionPName": "MySql.Data.MySqlClient",
"FinanceConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=reborn_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"FinanceConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=test_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"FinanceConnectionPName": "MySql.Data.MySqlClient",
"DataStatisticsConnection": "server=192.168.10.214;user id=reborn;password=Reborn@2018;database=reborn_datastatistics;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DataStatisticsConnectionPName": "MySql.Data.MySqlClient",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment