ComplianceServer/oldcode/Core.Web/Controllers/PerformanceController.cs

1149 lines
56 KiB
C#

using Core.Web.App_Start;
using Core.Web.WebHelper;
using CRM.Core.BLL;
using CRM.Core.BLL.Application.Order;
using CRM.Core.BLL.Application.Performance;
using CRM.Core.BLL.B;
using CRM.Core.BLL.TransOrder;
using CRM.Core.BLL.Util;
using CRM.Core.BLL.Wx;
using CRM.Core.DTO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using WX.CRM.Common;
namespace Core.Web.Controllers
{
public class PerformanceController : BaseController
{
WX_SZZYORDER_BL _order = new WX_SZZYORDER_BL();
WX_SzzyOrderDeposit_BL _orderDeposit = new WX_SzzyOrderDeposit_BL();
Reward_PayInfo_BL _rewardPayInfo = new Reward_PayInfo_BL();
WX_SzzyOrderRefund_BL _orderRefund = new WX_SzzyOrderRefund_BL();
B_Audit_Items_BL b_Audit_Items_Bl = new B_Audit_Items_BL();
private readonly PerformanceService _performanceService = new PerformanceService();
private readonly OrderService _orderService = new OrderService();
CACHE_BL _cache = new CACHE_BL();
QueryAudit queryAudit= new QueryAudit();
[AuthorizeRedirect(RightsConfig.CONST_业绩核算, ToolBarConfig.CONST_NotButton, true)]
[HttpGet]
public ActionResult List()
{
ViewBag.companyList = _cache.GetCompanyVirtual();
return View();
}
[HttpPost]
[AuthorizeRedirect(RightsConfig.CONST_业绩核算, ToolBarConfig.CONST_NotButton, false)]
public JsonResult List(string channels, string yearMonth)
{
var dataAll = new List<PerformanceView>();
var dataXL = new List<XieLieView>();
var starttime = string.Empty;
var endtime = string.Empty;
//订单数据
var orderList = _order.GetOpenOrder(starttime, endtime);
//到账数据
var orderPayList = _order.GetDzOrder2(starttime, endtime);
//退款数据
var orderRefund = _orderRefund.GetNotCurMonthRefundOrder(starttime, endtime);
//LogHelper.Info("orderlist:" + orderList.Count.ToString() + "==orderpaylist:" + orderPayList.Count.ToString() + "==orderrefund:" + orderRefund.Count.ToString());
if (!string.IsNullOrEmpty(channels))
{
//cacheKey2 = cacheKey2 + channels;
var arr0 = channels.Split('|');
if (arr0.Length > 1)
{
var whereOr = PredicateExtensionses.False<OpenOrder>();
var whereOr2 = PredicateExtensionses.False<DzOrder2>();
var whereOr3 = PredicateExtensionses.False<RefundOrder>();
foreach (var arr in arr0)
{
var a = arr.Split(',');
var min = Convert.ToInt32(a[0]);
var max = Convert.ToInt32(a[1]);
whereOr = whereOr.Or(m => m.channel >= min && m.channel <= max);
whereOr2 = whereOr2.Or(m => m.channel >= min && m.channel <= max);
whereOr3 = whereOr3.Or(m => m.channel >= min && m.channel <= max);
}
orderList = orderList.Where(whereOr.Compile()).ToList();
orderPayList = orderPayList.Where(whereOr2.Compile()).ToList();
orderRefund = orderRefund.Where(whereOr3.Compile()).ToList();
}
else
{
var arr = channels.Split(',');
var min = Convert.ToInt32(arr[0]);
var max = Convert.ToInt32(arr[1]);
orderList = orderList.Where(m => m.channel >= min && m.channel <= max).ToList();
orderPayList = orderPayList.Where(m => m.channel >= min && m.channel <= max).ToList();
orderRefund = orderRefund.Where(m => m.channel >= min && m.channel <= max).ToList();
}
}
var orderRefundList = _orderRefund.GetList(p => p.auditstatus == 1)
.Select(p => new OrderRefundView { fmonth = int.Parse(p.refunddate.Value.ToString("yyyyMM")), refundprice = p.refundprice, refundtype = p.refundtype }).ToList();
foreach (var item in orderRefundList)
{
if (item.refundtype == 11)
{
item.refundprice = item.refundprice * Convert.ToDecimal(0.68607);
}
else if (item.refundtype == 12)
{
item.refundprice = item.refundprice * Convert.ToDecimal(0.68760);
//LogHelper.Info("item.refundprice:" + item.refundprice.ToString());
}
else if (item.refundtype == 13)
{
item.refundprice = item.refundprice * Convert.ToDecimal(0.686);
}
}
//其他收入
var rewardPayInfoList = _rewardPayInfo.GetList(p => p.auditstatus == 1 && p.isdelete == 0)
.Select(p => new { paydate = int.Parse(p.paydate.ToString("yyyyMM")), payprice = p.payprice })
.GroupBy(p => p.paydate)
.Select(g => new { omonth = g.Key, dzje = g.Sum(p => p.payprice) })
.OrderBy(p => p.omonth)
;
var data = new List<Performance>();
var dayCount = 0;
decimal rate = 1;
//data = _performanceService.GetPerformanceDay();
//LogHelper.Info("data:" + data.Count.ToString());
if (!data.Any())
{
#region
foreach (var order in orderList)
{
//爱赢系列
//if (order.productid == 1007)
//{
if (order.settletype == 1007)
{
order.opendays = 1;
order.endday = order.opday.AddDays(1);
}
//}
//多赢系列
if (order.arrivalpay < 10)
{
//9.9订单放到多赢系列
order.productid = 1009;
}
var nowDate = order.opday;
var diffmonth = (order.endday.Year - order.opday.Year) * 12 + (order.endday.Month - order.opday.Month);//相差月数
var i = 0;
while (i <= diffmonth)
{
var curMonthFirstDay = nowDate.AddDays(1 - nowDate.Day);//本月第一天
var curMonthLastDay = nowDate.AddDays(1 - nowDate.Day).Date.AddMonths(1).AddDays(-1);//本月最后一天
var nextMonthFirstDay = nowDate.AddDays(1 - nowDate.Day).Date.AddMonths(1);//下个月第一天
if (i == 0)
{
//第一个月
if (curMonthLastDay < order.endday)
{
dayCount = (nextMonthFirstDay - nowDate).Days;
}
else
{
dayCount = (order.endday - nowDate).Days;
}
}
else if (i == diffmonth)
{
//最后一个月
dayCount = (order.endday - curMonthFirstDay).Days;
}
else
{
dayCount = (nextMonthFirstDay - curMonthFirstDay).Days;
}
//写入60%部分
var oyear = int.Parse(nowDate.ToString("yyyy"));
var omonth = int.Parse(nowDate.ToString("yyyyMM"));
//if (order.productid == 1008)
//{
// if (i == 0)
// {
// //第一个月写入60%
// data.Add(new Performance()
// {
// orderid = order.orderid,
// oyear = order.orderyear,
// omonth = order.ordermonth,
// daycount = dayCount,
// jiazhi = 0,
// jzcount = order.arrivalpay * 6 / 10,
// channel = order.channel,
// opmonth = order.ordermonth,
// opyear = order.orderyear,
// type = 1,
// productid = order.productid,
// amonth = order.amonth,
// arrivalpay = order.arrivalpay,
// opendays = order.opendays
// });
// }
// data.Add(new Performance()
// {
// orderid = order.orderid,
// oyear = oyear,
// omonth = omonth,
// daycount = dayCount,
// jiazhi = order.arrivalpay * 4 / 10 / order.opendays,
// jzcount = dayCount * (order.arrivalpay * 4 / 10 / order.opendays),
// channel = order.channel,
// opmonth = order.ordermonth,
// opyear = order.orderyear,
// type = 0,
// productid = order.productid,
// amonth = order.amonth,
// arrivalpay = order.arrivalpay,
// opendays = order.opendays
// });
// if(!string.IsNullOrEmpty(order.upgradeorderids))
// {
// var upArr = order.upgradeorderids.Split(',');
// foreach (var arr in upArr)
// {
// //var oldOrderId = Convert.ToInt32(order.upgradeorderids);
// var oldOrderId = Convert.ToInt32(arr);
// var oldOrderList = data.Where(p => p.orderid == oldOrderId && p.omonth > omonth && p.type == 0);
// foreach (var item in oldOrderList)
// {
// item.daycount = 0;
// item.jiazhi = 0;
// item.jzcount = 0;
// }
// var oldOrder = data.Find(p => p.orderid == oldOrderId && p.omonth == omonth && p.type == 0);
// var oldOrder40Sum = data.Where(p => p.orderid == oldOrderId && p.omonth < order.ordermonth && p.type == 0).Sum(p => p.jzcount);
// decimal curOrderRate = Convert.ToDecimal(Convert.ToDecimal(dayCount) / Convert.ToDecimal(order.opendays));
// if (oldOrder != null)
// {
// oldOrder.daycount = dayCount;
// oldOrder.jiazhi = oldOrder.arrivalpay * 4 / 10 / oldOrder.opendays;
// oldOrder.jzcount = curOrderRate * (oldOrder.arrivalpay * 4 / 10 - oldOrder40Sum);
// }
// else
// {
// var addorder = orderList.Find(p => p.orderid == oldOrderId);
// data.Add(new Performance()
// {
// orderid = addorder.orderid,
// oyear = oyear,
// omonth = omonth,
// daycount = dayCount,
// jiazhi = addorder.arrivalpay * 4 / 10 / addorder.opendays,
// jzcount = curOrderRate * (addorder.arrivalpay * 4 / 10 - oldOrder40Sum),
// channel = addorder.channel,
// opmonth = addorder.ordermonth,
// opyear = addorder.orderyear,
// type = 0,
// productid = addorder.productid,
// amonth = addorder.amonth,
// arrivalpay = addorder.arrivalpay,
// opendays = addorder.opendays
// });
// }
// }
// }
//}
//else
{
data.Add(new Performance()
{
orderid = order.orderid,
oyear = oyear,
omonth = omonth,
daycount = dayCount,
jiazhi = order.arrivalpay / order.opendays,
jzcount = dayCount * (order.arrivalpay / order.opendays),
channel = order.channel,
opmonth = order.ordermonth,
opyear = order.orderyear,
type = 0,
productid = order.productid,
amonth = order.amonth,
arrivalpay = order.arrivalpay,
opendays = order.opendays
});
//
//if (!string.IsNullOrEmpty(order.upgradeorderids))
//{
// var upArr = order.upgradeorderids.Split(',');
// foreach (var arr in upArr)
// {
// var oldOrderId = Convert.ToInt32(arr);
// var oldOrderList = data.Where(p => p.orderid == oldOrderId && p.omonth > omonth && p.type == 0);
// foreach (var item in oldOrderList)
// {
// item.daycount = 0;
// item.jiazhi = 0;
// item.jzcount = 0;
// }
// var oldOrder = data.Find(p => p.orderid == oldOrderId && p.omonth == omonth && p.type == 0);
// var oldOrderUsePriceSum = data.Where(p => p.orderid == oldOrderId && p.omonth < order.ordermonth && p.type == 0).Sum(p => p.jzcount);
// decimal curOrderRate = Convert.ToDecimal(Convert.ToDecimal(dayCount) / Convert.ToDecimal(order.opendays));
// if (oldOrder != null)
// {
// oldOrder.daycount = dayCount;
// oldOrder.jiazhi = oldOrder.arrivalpay / oldOrder.opendays;
// oldOrder.jzcount = curOrderRate * (oldOrder.arrivalpay - oldOrderUsePriceSum);
// }
// else
// {
// var addorder = orderList.Find(p => p.orderid == oldOrderId);
// data.Add(new Performance()
// {
// orderid = addorder.orderid,
// oyear = oyear,
// omonth = omonth,
// daycount = dayCount,
// jiazhi = addorder.arrivalpay / addorder.opendays,
// jzcount = curOrderRate * (addorder.arrivalpay - oldOrderUsePriceSum),
// channel = addorder.channel,
// opmonth = addorder.ordermonth,
// opyear = addorder.orderyear,
// type = 0,
// productid = addorder.productid,
// amonth = addorder.amonth,
// arrivalpay = addorder.arrivalpay,
// opendays = addorder.opendays
// });
// }
// }
//}
}
nowDate = nowDate.AddMonths(1);
i++;
}
}
#endregion
#region 退
//decimal allRefund = 0;
//var oid = 80089645;
foreach (var item in orderRefund)
{
//if (item.productid == 1007)
//{
if (item.settletype == 1007)
{
item.opendays = 1;
item.endRefundDate = item.startRefundDate;
}
//}
if (item.arrivalpay < 10)
item.productid = 1009;
//decimal refundTotal = 0;
var nowDate = item.endRefundDate;
//if (item.orderid == oid)
//{
// LogHelper.Info("item.endRefundDate:" + item.endRefundDate.ToString() + ", item.startRefundDate:" + item.startRefundDate.ToString());
//}
var diffmonth = (item.endRefundDate.Year - item.startRefundDate.Year) * 12 + (item.endRefundDate.Month - item.startRefundDate.Month);//相差月数
//if (item.orderid == oid)
//{
// LogHelper.Info("diffmonth:" + diffmonth.ToString());
//}
//decimal notCurMonthPrice = 0;
decimal notCurMonthPrice60 = 0;
if (diffmonth > 0)
{
//摊分退款的处理
var i = diffmonth;
while (i > 0)
{
var curMonthFirstDay = nowDate.AddDays(1 - nowDate.Day);//本月第一天
var curMonthLastDay = nowDate.AddDays(1 - nowDate.Day).Date.AddMonths(1).AddDays(-1);//本月最后一天
var nextMonthFirstDay = nowDate.AddDays(1 - nowDate.Day).Date.AddMonths(1);//下个月第一天
if (i == 0)
{
//第一个月
if (curMonthLastDay < item.endRefundDate)
{
dayCount = (nextMonthFirstDay - nowDate).Days;
}
else
{
dayCount = (item.endRefundDate - nowDate).Days;
}
}
else if (i == diffmonth)
{
//最后一个月
dayCount = (item.endRefundDate - curMonthFirstDay).Days;
}
else
{
dayCount = (nextMonthFirstDay - curMonthFirstDay).Days;
}
//LogHelper.Info("dayCount:" + dayCount.ToString());
var nowMonth = int.Parse(nowDate.ToString("yyyyMM"));
//累计预收退款小于退款金额,说明还有退款需要处理
if (notCurMonthPrice60 < item.refundprice)
{
//var refundInfo = data.FirstOrDefault(p => p.omonth == nowMonth && p.orderid == item.orderid);
var model60 = data.FirstOrDefault(p => p.omonth == nowMonth && p.orderid == item.orderid);
if (model60 != null)
{
//去掉60服务费
//if (item.productid == 1008)
// rate = Convert.ToDecimal(0.4);
//else
// rate = 1;
/*新代码*/
var monthPrice = dayCount * (item.arrivalpay * rate / item.opendays);
var diffPrice = monthPrice - model60.monthRefundPrice;
if (item.arrivalpay > item.needpay && item.arrivalpay - item.refundprice == item.needpay)
{
//多付部分的退款,不需要处理
//model60.monthRefundPrice = dayCount * (item.refundprice * rate / item.opendays);
}
else
{
//可能存在多笔退款的情况
if (model60.monthRefundPrice == model60.jzcount)
{
}
else
{
if (!model60.fmonth.HasValue)
{
model60.fmonth = item.refunddate;
}
if (diffPrice <= (item.refundprice - notCurMonthPrice60))
{
model60.monthRefundPrice += diffPrice;
notCurMonthPrice60 += diffPrice;
}
else
{
model60.monthRefundPrice += (item.refundprice - notCurMonthPrice60);
notCurMonthPrice60 += (item.refundprice - notCurMonthPrice60);
}
}
}
/*旧代码*/
//if (item.arrivalpay - item.refundprice == item.needpay)
//{
// model60.monthRefundPrice = dayCount * (item.refundprice * rate / item.opendays);
//}
//else
//{
// model60.monthRefundPrice = dayCount * (item.arrivalpay * rate / item.opendays);
// //model60.monthRefundPrice = model60.jzcount;
//}
////model60.monthRefundPrice = model60.jzcount;
//notCurMonthPrice60 += model60.monthRefundPrice;
////如果退款少于预收则直接就是当前退款金额
//if (notCurMonthPrice60 > item.refundprice)
//{
// notCurMonthPrice60 -= model60.monthRefundPrice;
// model60.monthRefundPrice = item.refundprice - notCurMonthPrice60;
// notCurMonthPrice60 += model60.monthRefundPrice;
//}
}
}
nowDate = nowDate.AddMonths(-1);
i--;
}
//服务费及第一个月退款的处理
if (item.refundprice > notCurMonthPrice60)
{
var model60 = data.FirstOrDefault(p => p.omonth == item.refunddate && p.orderid == item.orderid);
if (model60 != null)
{
if (!model60.fmonth.HasValue)
{
model60.fmonth = item.refunddate;
}
//去掉60%服务费
//if (item.productid == 1008)
// rate = Convert.ToDecimal(0.6);
//else
// rate = 1;
if (item.arrivalpay > item.needpay && item.arrivalpay - item.refundprice == item.needpay)
{
//多付部分的退款,不需要处理
/*旧代码,新代码不需要处理*/
//model60.firstRefundPrice = dayCount * (item.refundprice * rate / item.opendays);
}
else
{
model60.firstRefundPrice = dayCount * (item.arrivalpay * rate / item.opendays);
//model60.monthRefundPrice = model60.jzcount;
}
//LogHelper.Info("model60.curMonthRefundPrice:" + model60.curMonthRefundPrice.ToString() + ",item.refundprice:" + item.refundprice.ToString() + ",notCurMonthPrice60:" + notCurMonthPrice60.ToString());
/*新代码 处理多个退款的问题*/
model60.curMonthRefundPrice += item.refundprice - notCurMonthPrice60;
/*旧代码 多个退款会覆盖退款金额*/
//model60.curMonthRefundPrice = item.refundprice - notCurMonthPrice60;
//refundTotal += model60.curMonthRefundPrice;
}
}
}
else
{
//if (item.orderid == oid)
//{
// LogHelper.Info("item.refunddate:" + item.refunddate.ToString() + ", item.refundprice:" + item.refundprice.ToString());
//}
//服务期已经结束的情况
//refundTotal += item.refundprice;
data.Add(new Performance()
{
orderid = item.orderid,
oyear = int.Parse(item.startRefundDate.ToString("yyyy")),
omonth = item.refunddate,
daycount = dayCount,
jiazhi = 0,
jzcount = 0,
channel = item.channel,
opmonth = item.refunddate,
opyear = int.Parse(item.startRefundDate.ToString("yyyy")),
type = 0,
productid = item.productid,
curMonthRefundPrice = item.refundprice,
monthRefundPrice = 0,
fmonth = item.refunddate
});
}
//if (refundTotal != item.refundprice)
//{
// LogHelper.Info("refundTotal:" + refundTotal.ToString() + ",orderid:" + item.orderid.ToString() + ",item.refundprice" + item.refundprice.ToString());
//}
}
#endregion
}
//LogHelper.Info("data2:" + data.Count.ToString());
_performanceService.PutMonPerformanceDay(data);
_performanceService.PutMonDzOrderDay(orderPayList);
//LogHelper.Info("put:ok");
if (!string.IsNullOrEmpty(channels))
{
var arr0 = channels.Split('|');
if (arr0.Length > 1)
{
var whereOr = PredicateExtensionses.False<Performance>();
foreach (var arr in arr0)
{
var a = arr.Split(',');
var min = Convert.ToInt32(a[0]);
var max = Convert.ToInt32(a[1]);
whereOr = whereOr.Or(m => m.channel >= min && m.channel <= max);
}
data = data.Where(whereOr.Compile()).ToList();
}
else
{
var arr = channels.Split(',');
var min = Convert.ToInt32(arr[0]);
var max = Convert.ToInt32(arr[1]);
data = data.Where(m => m.channel >= min && m.channel <= max).ToList();
}
}
#region
var dataMonth = data.GroupBy(p => p.omonth);
decimal djSum = 0;
foreach (var item in dataMonth)
{
//差额
//var ce = orderPayList.Where(p => p.paymonth == item.Key && p.orderstatus == "90" && p.fmonth > p.nmonth).Sum(p => p.payprice);
//订单收入
var ddsr = orderList.Where(p => p.ordermonth == item.Key).Sum(p => p.arrivalpay);
//ddsr = ddsr - ce;
//预收
decimal ys = 0;
//if (item.Key < 202101)
//{
ys = orderPayList.Where(p => p.paymonth == item.Key && (p.omonth > p.paymonth || p.orderstatus == "200" || (p.omonth is null && (p.amonth > p.paymonth || p.amonth is null)))).Sum(p => p.payprice);
//ys = orderPayList.Where(p => p.paymonth == item.Key && (p.omonth > p.paymonth || p.orderstatus == "200" || (p.omonth is null && (p.amonth > p.paymonth || p.amonth is null || p.orderstatus == "90")))).Sum(p => p.payprice);
//ys = orderPayList.Where(p => p.paymonth == item.Key && (p.omonth > p.paymonth || p.orderstatus == "200" || (p.omonth is null && p.amonth is null))).Sum(p => p.payprice);
//}
//else
//{
// ys = orderPayList.Where(p => p.paymonth == item.Key && (p.omonth > p.paymonth || p.orderstatus == "200" || (p.omonth is null && (p.amonth > p.paymonth || p.amonth is null))) || excludeeList2.Contains(p.orderid.Value)).Sum(p => p.payprice);
//}
//ys = ys + ce;
//订金使用
var useDj = orderPayList.Where(p => (p.omonth == item.Key && p.omonth > p.paymonth) || (p.omonth is null && p.amonth > p.paymonth && p.fmonth == item.Key)).Sum(p => p.payprice);
//其它收入
var ds = rewardPayInfoList.Where(p => p.omonth == item.Key).Sum(p => p.dzje);
//当月订单总收入
var dyddzsr = ddsr + ys + ds - useDj;
//var dyddzsr = ddsr + ys + ds;
//当月总退款
var dyztk = orderRefundList.Where(p => p.fmonth == item.Key).Sum(p => p.refundprice);
//账户收入
var zhsr = dyddzsr - dyztk;
//入账
var rz = data.Where(p => p.omonth == item.Key).Sum(p => p.jzcount);
//预收
var lc = data.Where(p => p.omonth > item.Key && p.type == 0 && p.opmonth <= item.Key).Sum(p => p.jzcount);
//var dytk = data.Where(p => p.omonth == item.Key).Sum(p => p.curMonthRefundPrice);
//var fdytk = data.Where(p => p.omonth == item.Key).Sum(p => p.monthRefundPrice);
//入账退款
var rztk = data.Where(p => p.omonth == item.Key).Sum(p => p.curMonthRefundPrice + p.monthRefundPrice);
//预收退款
var lctk = data.Where(p => p.omonth > item.Key && p.type == 0 && p.fmonth <= item.Key).Sum(p => p.monthRefundPrice);
//订金退款
//var djtk = orderPayList.Where(p => p.fmonth <= item.Key && p.omonth == null && p.isuse == null && (p.orderstatus == null || p.orderstatus == "90")).Sum(p => p.payprice);
var djtk = orderPayList.Where(p => p.fmonth <= item.Key && p.omonth == null && p.isuse == null && p.orderstatus == null).Sum(p => p.payprice);
//如果当前月没有订金退款
var djtkCurMonth = orderPayList.Where(p => p.fmonth == item.Key && p.omonth == null && p.isuse == null && p.orderstatus == null).Sum(p => p.payprice);
if (djtkCurMonth == 0)
djtk = 0;
if (ys > 0 || useDj > 0)
{
djSum += ys - useDj;
}
else
{
djSum = 0;
}
dataAll.Add(new PerformanceView()
{
omonth = item.Key,
ddsr = ddsr.ToString("f"),
ys = ys.ToString("f"),
//notUseDj = notUseDj.ToString("f"),
useDj = useDj.ToString("f"),
//tkDj = tkDj.ToString("f"),
ds = ds.ToString("f"),
dyddzsr = dyddzsr.ToString("f"),
dyztk = dyztk.ToString("f"),
zhsr = zhsr.ToString("f"),
rz = (rz - rztk).ToString("f"),
lc = (lc - lctk - djtk).ToString("f"),
dytk = "0",
fdytk = "0",
rztk = rztk.ToString("f"),
lctk = lctk.ToString("f"),
djtk = djtk.ToString("f"),
dj = djSum.ToString("f")
});
}
#endregion
#region
decimal zydjSum = 0;
decimal dydjSum = 0;
decimal aydjSum = 0;
foreach (var item in dataMonth)
{
#region
//软件费
var rjf1008 = data.Where(p => p.productid == 1008 && p.omonth == item.Key && p.type == 1).Sum(p => p.jzcount);
//维护费
var whf1008 = data.Where(p => p.productid == 1008 && p.omonth == item.Key && p.type == 0).Sum(p => p.jzcount);
//软件费退款
var rjftk1008 = data.Where(p => p.productid == 1008 && p.omonth == item.Key).Sum(p => p.curMonthRefundPrice - p.firstRefundPrice);
//维护费退款
var whftk1008 = data.Where(p => p.productid == 1008 && p.omonth == item.Key).Sum(p => p.monthRefundPrice + p.firstRefundPrice);
//入账
var rz1008 = data.Where(p => p.productid == 1008 && p.omonth == item.Key).Sum(p => p.jzcount);
//入账退款
var rztk1008 = data.Where(p => p.productid == 1008 && p.omonth == item.Key).Sum(p => p.curMonthRefundPrice + p.monthRefundPrice);
//预收
var lc1008 = data.Where(p => p.productid == 1008 && p.omonth > item.Key && p.type == 0 && p.opmonth <= item.Key).Sum(p => p.jzcount);
//预收退款
var lctk1008 = data.Where(p => p.productid == 1008 && p.omonth > item.Key && p.type == 0 && p.fmonth <= item.Key).Sum(p => p.monthRefundPrice);
//订金退款
var djtk1008 = orderPayList.Where(p => p.productid == 1008 && p.fmonth <= item.Key && p.omonth == null && p.isuse == null && p.orderstatus == null).Sum(p => p.payprice);
var djtk1008CurMonth = orderPayList.Where(p => p.productid == 1008 && p.fmonth == item.Key && p.omonth == null && p.isuse == null && p.orderstatus == null).Sum(p => p.payprice);
if (djtk1008CurMonth == 0)
djtk1008 = 0;
//订金
var ys1008 = orderPayList.Where(p => p.productid == 1008 && (p.paymonth == item.Key && (p.omonth > p.paymonth || p.orderstatus == "200" || (p.omonth is null && (p.amonth > p.paymonth || p.amonth is null))))).Sum(p => p.payprice);
//订金使用
var useDj1008 = orderPayList.Where(p => p.productid == 1008 && ((p.omonth == item.Key && p.omonth > p.paymonth) || (p.omonth is null && p.amonth > p.paymonth && p.fmonth == item.Key))).Sum(p => p.payprice);
if (ys1008 > 0 || useDj1008 > 0)
{
zydjSum += ys1008 - useDj1008;
}
else
{
zydjSum = 0;
}
#endregion
#region
//入账
var rz1009 = data.Where(p => p.productid == 1009 && p.omonth == item.Key).Sum(p => p.jzcount);
//入账退款
var rztk1009 = data.Where(p => p.productid == 1009 && p.omonth == item.Key).Sum(p => p.curMonthRefundPrice + p.monthRefundPrice);
//预收
var lc1009 = data.Where(p => p.productid == 1009 && p.omonth > item.Key && p.type == 0 && p.opmonth <= item.Key).Sum(p => p.jzcount);
//预收退款
var lctk1009 = data.Where(p => p.productid == 1009 && p.omonth > item.Key && p.type == 0 && p.fmonth <= item.Key).Sum(p => p.monthRefundPrice);
//订金退款
var djtk1009 = orderPayList.Where(p => p.productid == 1009 && p.fmonth <= item.Key && p.omonth == null && p.isuse == null && p.orderstatus == null).Sum(p => p.payprice);
var djtk1009CurMonth = orderPayList.Where(p => p.productid == 1009 && p.fmonth == item.Key && p.omonth == null && p.isuse == null && p.orderstatus == null).Sum(p => p.payprice);
if (djtk1009CurMonth == 0)
djtk1009 = 0;
//订金
var ys1009 = orderPayList.Where(p => p.productid == 1009 && (p.paymonth == item.Key && (p.omonth > p.paymonth || p.orderstatus == "200" || (p.omonth is null && (p.amonth > p.paymonth || p.amonth is null))))).Sum(p => p.payprice);
//订金使用
var useDj1009 = orderPayList.Where(p => p.productid == 1009 && ((p.omonth == item.Key && p.omonth > p.paymonth) || (p.omonth is null && p.amonth > p.paymonth && p.fmonth == item.Key))).Sum(p => p.payprice);
if (ys1009 > 0 || useDj1009 > 0)
{
dydjSum += ys1009 - useDj1009;
}
else
{
dydjSum = 0;
}
#endregion
#region
//入账
var rz1007 = data.Where(p => p.productid == 1007 && p.omonth == item.Key).Sum(p => p.jzcount);
//入账退款
var rztk1007 = data.Where(p => p.productid == 1007 && p.omonth == item.Key).Sum(p => p.curMonthRefundPrice + p.monthRefundPrice);
//预收
var lc1007 = data.Where(p => p.productid == 1007 && p.omonth > item.Key && p.type == 0 && p.opmonth <= item.Key).Sum(p => p.jzcount);
//预收退款
var lctk1007 = data.Where(p => p.productid == 1007 && p.omonth > item.Key && p.type == 0 && p.fmonth <= item.Key).Sum(p => p.monthRefundPrice);
//订金退款
var djtk1007 = orderPayList.Where(p => p.productid == 1007 && p.fmonth <= item.Key && p.omonth == null && p.isuse == null && p.orderstatus == null).Sum(p => p.payprice);
var djtk1007CurMonth = orderPayList.Where(p => p.productid == 1007 && p.fmonth == item.Key && p.omonth == null && p.isuse == null && p.orderstatus == null).Sum(p => p.payprice);
if (djtk1007CurMonth == 0)
djtk1007 = 0;
//订金
var ys1007 = orderPayList.Where(p => p.productid == 1007 && (p.paymonth == item.Key && (p.omonth > p.paymonth || p.orderstatus == "200" || (p.omonth is null && (p.amonth > p.paymonth || p.amonth is null))))).Sum(p => p.payprice);
//订金使用
var useDj1007 = orderPayList.Where(p => p.productid == 1007 && ((p.omonth == item.Key && p.omonth > p.paymonth) || (p.omonth is null && p.amonth > p.paymonth && p.fmonth == item.Key))).Sum(p => p.payprice);
if (ys1007 > 0 || useDj1007 > 0)
{
aydjSum += ys1007 - useDj1007;
}
else
{
aydjSum = 0;
}
#endregion
var zyrjf = rjf1008 - rjftk1008;
var zywhf = whf1008 - whftk1008;
var zyrz = rz1008 - rztk1008;
var zyys = lc1008 - lctk1008 - djtk1008 + zydjSum;
var dyrz = rz1009 - rztk1009;
var dyys = lc1009 - lctk1009 - djtk1009 + dydjSum;
var ayrz = rz1007 - rztk1007;
var ayys = lc1007 - lctk1007 - djtk1007 + aydjSum;
dataXL.Add(new XieLieView()
{
omonth = item.Key,
zyrjf = zyrjf.ToString("f"),
zywhf = zywhf.ToString("f"),
zyrz = zyrz.ToString("f"),
zyys = zyys.ToString("f"),
dyrz = dyrz.ToString("f"),
dyys = dyys.ToString("f"),
ayrz = ayrz.ToString("f"),
ayys = ayys.ToString("f")
});
}
#endregion
//var lcSum = data.Where(p => p.omonth > 202006 && p.type == 0 && p.opmonth <= 202006).Sum(p => p.jzcount);
//LogHelper.Info("lcsum:" + lcSum.ToString());
////预收退款
//var lctkSum = data.Where(p => p.omonth > 202006 && p.type == 0 && p.fmonth <= 202006).Sum(p => p.monthRefundPrice);
//LogHelper.Info("lctkSum:" + lctkSum.ToString());
//var djtksum = orderPayList.Where(p => p.fmonth <= 202006 && p.omonth == null && p.isuse == null && p.orderstatus == null).Sum(p => p.payprice);
//LogHelper.Info("djtksum:" + djtksum.ToString());
////foreach (var item in orderPayList.Where(p => p.fmonth <= 202006 && p.omonth == null && p.isuse == null && p.orderstatus == null).OrderBy(p => p.orderid))
////{
//// LogHelper.Info("item:" + item.orderid + "," + item.payprice);
////}
//var ysSum = orderPayList.Where(p => p.paymonth == 202006 && (p.omonth > p.paymonth || p.orderstatus == "200" || (p.omonth is null && (p.amonth > p.paymonth || p.amonth is null)))).Sum(p => p.payprice);
//LogHelper.Info("ysSum:" + ysSum.ToString());
//var useDjSum = orderPayList.Where(p => (p.omonth == 202006 && p.omonth > p.paymonth && p.fmonth is null) || (p.omonth is null && p.amonth > p.paymonth && p.fmonth == 202006)).Sum(p => p.payprice);
//LogHelper.Info("useDjSum:" + useDjSum.ToString());
//foreach (var item in orderPayList.Where(p => (p.omonth == 202006 && p.omonth > p.paymonth && p.fmonth is null) || (p.omonth is null && p.amonth > p.paymonth && p.fmonth == 202006)).OrderBy(p => p.orderid))
//{
// LogHelper.Info("item:" + item.orderid + "," + item.fmonth);
//}
//var aaaaSum = orderPayList.Where(p => (p.omonth == 202003 && p.omonth > p.paymonth) || (p.omonth is null && p.amonth > p.paymonth && p.fmonth == 202003)).Sum(p => p.payprice);
//LogHelper.Info("aaa:" + aaaaSum.ToString());
//foreach (var item in orderPayList.Where(p => (p.omonth == 202003 && p.omonth > p.paymonth) || (p.omonth is null && p.amonth > p.paymonth && p.fmonth == 202003)).OrderBy(p => p.orderid))
//{
// LogHelper.Info(item.orderid + "," + item.payprice);
//}
//if (!CacheHelper.Exists(cacheKey))
//{
// CacheHelper.Set(cacheKey, dataAll, new DateTime(DateTime.Now.AddDays(1).Year, DateTime.Now.AddDays(1).Month, DateTime.Now.AddDays(1).Day), false);
//}
//if (!CacheHelper.Exists(cacheKey2))
//{
// CacheHelper.Set(cacheKey2, dataXL, new DateTime(DateTime.Now.AddDays(1).Year, DateTime.Now.AddDays(1).Month, DateTime.Now.AddDays(1).Day), false);
//}
//}
return Json(new { dataAll = dataAll.OrderBy(p => p.omonth).ToList(), dataProducts = dataXL.OrderBy(p => p.omonth).ToList() }, JsonRequestBehavior.AllowGet);
}
[AuthorizeRedirect(RightsConfig.CONST_收入进度, ToolBarConfig.CONST_NotButton, true)]
[HttpGet]
public ActionResult Income()
{
return View();
}
[HttpGet]
public ActionResult Exec()
{
ViewBag.AuditItems = b_Audit_Items_Bl.GetAuditItemsFromId(0);
ViewBag.userRightId = userRightId.Where(d=>d.Equals("AUDIT|64")).FirstOrDefault();
return View();
}
[AuthorizeRedirect(RightsConfig.CONST_结算报表, ToolBarConfig.CONST_NotButton, true)]
[HttpPost]
public JsonResult Exec(DateTime sTime, DateTime eTime, DateTime? bTime, DateTime? fTime, string channel)
{
_orderService.ExecActCur();
return Json(new { result = true }, JsonRequestBehavior.AllowGet);
}
[AuthorizeRedirect(RightsConfig.CONST_结算报表, ToolBarConfig.CONST_NotButton, true)]
public JsonResult FlushExec2(DateTime sTime, DateTime eTime, DateTime? bTime, DateTime? fTime, string channel)
{
var ret = _orderService.FlushExecInomce(sTime, eTime, bTime, fTime, channel);
return Json(ret, JsonRequestBehavior.AllowGet);
}
[AuthorizeRedirect(RightsConfig.CONST_结算报表, ToolBarConfig.CONST_NotButton, true)]
public JsonResult Exec2(DateTime sTime, DateTime eTime, DateTime? bTime, DateTime? fTime, string channel)
{
var ret = _orderService.ExecInomce(sTime, eTime, bTime, fTime, channel);
return Json(ret, JsonRequestBehavior.AllowGet);
}
public JsonResult Show()
{
var data = _orderService.GetIncomeJieSuan();
return Json(new { data }, JsonRequestBehavior.AllowGet);
}
[AuthorizeRedirect(RightsConfig.CONST_结算报表, ToolBarConfig.CONST_NotButton, true)]
[HttpPost]
public JsonResult Export(DateTime eTime, DateTime fTime, string queryType)
{
var result = _orderService.ExportAuditExcel( queryType);
return Json(new { result }, JsonRequestBehavior.AllowGet);
}
[AuthorizeRedirect(RightsConfig.CONST_结算报表, ToolBarConfig.CONST_NotButton, true)]
[HttpPost]
public JsonResult Query(int itemId, string queryType)
{
if (itemId == 0)
{
var monkey = Int32.Parse(DateTime.Now.ToString("yyyyMM"));
var resultmonkey = queryAudit.GetAuditResult(monkey, queryType);
return Json(new { resultmonkey }, JsonRequestBehavior.AllowGet);
}
var result = queryAudit.GetItemAuditResult(itemId, queryType);
return Json(new { result }, JsonRequestBehavior.AllowGet);
}
[AuthorizeRedirect(RightsConfig.CONST_结算报表, ToolBarConfig.CONST_NotButton, true)]
[HttpPost]
public JsonResult GenModule(DateTime btime, DateTime fTime)
{
GenModule_Price genModule_Price = new GenModule_Price();
genModule_Price.Init_GenModule(btime, fTime.AddDays(1));
return Json(new retMsg() { result = true, retmsg = "生成成功" }, JsonRequestBehavior.AllowGet);
}
//[HttpPost]
public JsonResult MonthIncome(string userid, string yearMonth)
{
var data = _performanceService.GetMonthInCome(userid, yearMonth);
return Json(data, JsonRequestBehavior.AllowGet);
}
public JsonResult MonthCost(string userid, string yearMonth)
{
var data = _performanceService.GetMonthCost(userid, yearMonth);
return Json(data, JsonRequestBehavior.AllowGet);
}
//[HttpPost]
public JsonResult YearIncome(string userid, string yearMonth)
{
var data = _performanceService.GetYearInCome(userid, yearMonth);
return Json(data, JsonRequestBehavior.AllowGet);
}
//[AuthorizeRedirect(RightsConfig.CONST_业绩估算, ToolBarConfig.CONST_Other1, false)]
public JsonResult Clear()
{
//var cacheKey = "PerformanceAll";
//var cacheKey2 = "PerformanceXL";
//CacheHelper.Remove(cacheKey);
//CacheHelper.Remove(cacheKey2);
//var companyList = _cache.GetCompanyVirtual();
//foreach (var item in companyList)
//{
// CacheHelper.Remove(cacheKey2 + item);
//}
var ret = _performanceService.ClearPerformanDay();
return Json(new { result = ret }, JsonRequestBehavior.AllowGet);
}
public JsonResult SaveMonth()
{
var ret = _performanceService.SavePerformanMonth();
return Json(new { result = ret }, JsonRequestBehavior.AllowGet);
}
//private class Performance
//{
// public int orderid { get; set; }
// public int oyear { get; set; }
// /// <summary>
// /// 使用月份
// /// </summary>
// public int omonth { get; set; }
// /// <summary>
// /// 使用年份
// /// </summary>
// public int daycount { get; set; }
// public decimal jiazhi { get; set; }
// public decimal jzcount { get; set; }
// public int channel { get; set; }
// /// <summary>
// /// 开通月份
// /// </summary>
// public int opmonth { get; set; }
// /// <summary>
// /// 开通年份
// /// </summary>
// public int opyear { get; set; }
// public int type { get; set; }
// public int productid { get; set; }
// /// <summary>
// /// 到账月份
// /// </summary>
// public int amonth { get; set; }
// public decimal arrivalpay { get; set; }
// public decimal curMonthRefundPrice { get; set; }
// public decimal monthRefundPrice { get; set; }
// public decimal firstRefundPrice { get; set; }
// public int? fmonth { get; set; }
//}
private class PerformanceCount
{
public int omonth { get; set; }
public string csfu { get; set; }
public string cswh { get; set; }
public string yj { get; set; }
public string fyj { get; set; }
public string rz { get; set; }
public string lcje { get; set; }
public string zyj { get; set; }
/// <summary>
/// 当月业绩
/// </summary>
public string dyyj { get; set; }
/// <summary>
/// 到账金额
/// </summary>
public string dzje { get; set; }
public string tkfu { get; set; }
public string tkwh { get; set; }
public string tk1 { get; set; }
public string tk2 { get; set; }
public string tk3 { get; set; }
public string tk4 { get; set; }
/// <summary>
/// 当月退款
/// </summary>
public string dytk { get; set; }
/// <summary>
/// 已支付未开通
/// </summary>
public string yzfwkt { get; set; }
/// <summary>
/// 本月到账
/// </summary>
public string dzsj_ktsj_diff { get; set; }
public string djdz { get; set; }
public string dj { get; set; }
public string djtk { get; set; }
public string nextdzje { get; set; }
}
private class PerformanceOther
{
public int omonth { get; set; }
public string dzje { get; set; }
}
private class PerformanceView
{
public int omonth { get; set; }
/// <summary>
/// 订单收入
/// </summary>
public string ddsr { get; set; }
/// <summary>
/// 预收
/// </summary>
public string ys { get; set; }
public string notUseDj { get; set; }
/// <summary>
/// 已使用订金
/// </summary>
public string useDj { get; set; }
public string tkDj { get; set; }
public string ds { get; set; }
/// <summary>
/// 单月订单总收入
/// </summary>
public string dyddzsr { get; set; }
/// <summary>
/// 单月总退款
/// </summary>
public string dyztk { get; set; }
/// <summary>
/// 账户收入
/// </summary>
public string zhsr { get; set; }
/// <summary>
/// 入账
/// </summary>
public string rz { get; set; }
/// <summary>
/// 预收
/// </summary>
public string lc { get; set; }
public string dytk { get; set; }
public string fdytk { get; set; }
/// <summary>
/// 入账退款
/// </summary>
public string rztk { get; set; }
/// <summary>
/// 预收退款
/// </summary>
public string lctk { get; set; }
/// <summary>
/// 订金退款
/// </summary>
public string djtk { get; set; }
public string dj { get; set; }
}
private class XieLieView
{
public int omonth { get; set; }
public string zyrjf { get; set; }
public string zywhf { get; set; }
public string zyrz { get; set; }
public string zyys { get; set; }
public string dyrz { get; set; }
public string dyys { get; set; }
public string ayrz { get; set; }
public string ayys { get; set; }
}
private class OrderRefundView
{
public int fmonth { get; set; }
public decimal refundprice { get; set; }
public int refundtype { get; set; }
}
}
}