ComplianceServer/oldcode/WEB/Controllers/WeiXin/CommissionGroupController.cs

434 lines
17 KiB
C#

using Ninject;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web.Mvc;
using WX.CRM.BLL.Util;
using WX.CRM.Common;
using WX.CRM.IBLL.Wx;
using WX.CRM.Model.Entity;
using WX.CRM.Model.MAP;
using WX.CRM.WebHelper;
namespace WX.CRM.WEB.Controllers.WeiXin
{
public class CommissionGroupController : BaseController
{
[Inject]
public CACHE_BL cache_BL { get; set; }
private readonly IWX_COMMISSION _wxCommission;
private IWX_SZZYSUBPRODUCT wx_SzzySubProduct_BL;
public CommissionGroupController(IWX_COMMISSION wxCommission, IWX_SZZYSUBPRODUCT wx_SzzySubProduct_BL)
{
_wxCommission = wxCommission;
this.wx_SzzySubProduct_BL = wx_SzzySubProduct_BL;
}
[HttpGet]
[AuthorizeRedirect(InitRights.CONST_销售组分成报表)]
public ActionResult Index()
{
ViewBag.inneruserid = UserId;
ViewBag.userGroupId = userGroupId;
ViewBag.saleDeptId = saleDeptId;
ViewBag.roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId);
return View();
}
[HttpPost]
[AuthorizeRedirect(InitRights.CONST_销售组分成报表)]
public JsonResult SaleGroupReportHtml(DateTime? sTime, DateTime? eTime, QueryUserComboDto usercomboDto, decimal? saleDeptId, string groupId)
{
try
{
usercomboDto.deptId = saleDeptId == null ? null : saleDeptId.ToString();
usercomboDto.groupIds = groupId;
//usercomboDto.userId = userId;
if (eTime.HasValue)
{
eTime = eTime.Value.AddDays(1);
}
var data = _wxCommission.GetSaleGroupReport(usercomboDto, sTime, eTime);
Table tab = new Table("tablist");
tab.AddHeadCol("GName", "", "组别");
var i = 0;
if (companyCode != "SHZZ")
{
if (data.Any())
{
var orderProduct = data.FirstOrDefault().OrderProductList;
foreach (var item in orderProduct)
{
tab.AddHeadCol("Product" + i, "", item.Key);
i++;
}
}
}
var x = 2 + i;
tab.AddHeadCol("NewOrderCount", "", "新单数量");
tab.AddHeadCol("NewOrderPay", "", "新单金额");
tab.AddHeadCol("RenewOrderCount", "", "续费单数量");
tab.AddHeadCol("RenewOrderPay", "", "续费单金额");
tab.AddHeadCol("UpOrderCount", "", "升级单数量");
tab.AddHeadCol("UpOrderPay", "", "升级单金额");
tab.AddHeadCol("AllOrderCount", "", "总数量");
tab.AddHeadCol("AllOrderPay", "", "总金额");
tab.AddHeadCol("RefundOrderCount", "", "当月退款数量");
tab.AddHeadCol("RefundPrice", "", "当月退款金额");
tab.AddHeadCol("UserOrderCount", "", "个人单量");
tab.AddHeadCol("UserOrderPrice", "", "个人业绩");
tab.AddHeadCol("JsOrderCount", "", "业绩数量");
tab.AddHeadCol("JsPrice", "", "业绩金额");
tab.AddHeadRow();
foreach (var item in data)
{
tab.AddCol(item.GName);
if (companyCode != "SHZZ")
{
foreach (var subItem in item.OrderProductList)
{
tab.AddCol(subItem.Value);
}
}
tab.AddCol(item.NewOrderCount);
tab.AddCol(item.NewOrderPay);
tab.AddCol(item.RenewOrderCount);
tab.AddCol(item.RenewOrderPay);
tab.AddCol(item.UpOrderCount);
tab.AddCol(item.UpOrderPay);
tab.AddCol(item.AllOrderCount);
tab.AddCol(item.AllOrderPay);
tab.AddCol(item.RefundOrderCount);
tab.AddCol(item.RefundPrice);
tab.AddCol(item.UserOrderCount);
tab.AddCol(item.UserOrderPrice);
tab.AddCol(item.JsOrderCount);
tab.AddCol(item.JsPrice);
tab.AddRow();
}
if (data.Any())
{
tab.AddCol("合计");
if (companyCode != "SHZZ")
{
var orderProduct = data.FirstOrDefault().OrderProductList;
foreach (var item in orderProduct)
{
tab.AddCol(string.Empty);
}
}
tab.AddCol(data.Sum(p => p.NewOrderCount));
tab.AddCol(data.Sum(p => p.NewOrderPay));
tab.AddCol(data.Sum(p => p.RenewOrderCount));
tab.AddCol(data.Sum(p => p.RenewOrderPay));
tab.AddCol(data.Sum(p => p.UpOrderCount));
tab.AddCol(data.Sum(p => p.UpOrderPay));
tab.AddCol(data.Sum(p => p.AllOrderCount));
tab.AddCol(data.Sum(p => p.AllOrderPay));
tab.AddCol(data.Sum(p => p.RefundOrderCount));
tab.AddCol(data.Sum(p => p.RefundPrice));
tab.AddCol(data.Sum(p => p.UserOrderCount));
tab.AddCol(data.Sum(p => p.UserOrderPrice));
tab.AddCol(data.Sum(p => p.JsOrderCount));
tab.AddCol(data.Sum(p => p.JsPrice));
tab.AddFootRow();
}
var json = new
{
rowsList = tab.GetRows(),
foot = tab.GetFoot()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LogHelper.Error("SaleUserReportController:" + ex.Message + ex.StackTrace);
return JsonHandler.ManageMessage(ex.Message, false);
}
}
#region
public FileResult Export(DateTime? sTime, DateTime? eTime, QueryUserComboDto usercomboDto, decimal? saleDeptId, string groupId)
{
usercomboDto.deptId = saleDeptId == null ? null : saleDeptId.ToString();
usercomboDto.groupIds = groupId;
//usercomboDto.userId = userId;
if (eTime.HasValue)
{
eTime = eTime.Value.AddDays(1);
}
var data = _wxCommission.GetSaleGroupReport(usercomboDto, sTime, eTime);
var dt = new DataTable();
dt.Columns.Add(new DataColumn("组别"));
if (companyCode != "SHZZ")
{
if (data.Any())
{
var orderProduct = data.FirstOrDefault().OrderProductList;
foreach (var item in orderProduct)
{
dt.Columns.Add(new DataColumn(item.Key, typeof(decimal)));
}
}
}
dt.Columns.Add(new DataColumn("新单数量", typeof(decimal)));
dt.Columns.Add(new DataColumn("新单金额", typeof(decimal)));
dt.Columns.Add(new DataColumn("续费单数量", typeof(decimal)));
dt.Columns.Add(new DataColumn("续费单金额", typeof(decimal)));
dt.Columns.Add(new DataColumn("升级单数量", typeof(decimal)));
dt.Columns.Add(new DataColumn("升级单金额", typeof(decimal)));
dt.Columns.Add(new DataColumn("总数量", typeof(decimal)));
dt.Columns.Add(new DataColumn("总金额", typeof(decimal)));
dt.Columns.Add(new DataColumn("本月退款数量", typeof(decimal)));
dt.Columns.Add(new DataColumn("本月退款金额", typeof(decimal)));
dt.Columns.Add(new DataColumn("个人单量", typeof(decimal)));
dt.Columns.Add(new DataColumn("个人业绩", typeof(decimal)));
dt.Columns.Add(new DataColumn("业绩数量", typeof(decimal)));
dt.Columns.Add(new DataColumn("业绩金额", typeof(decimal)));
foreach (var item in data)
{
DataRow dr = dt.NewRow();
dr[0] = item.GName;
if (companyCode != "SHZZ")
{
var i = 1;
foreach (var item1 in item.OrderProductList)
{
dr[i] = item1.Value;
i++;
}
}
dr["新单数量"] = item.NewOrderCount;
dr["新单金额"] = item.NewOrderPay;
dr["续费单数量"] = item.RenewOrderCount;
dr["续费单金额"] = item.RenewOrderPay;
dr["升级单数量"] = item.UpOrderCount;
dr["升级单金额"] = item.UpOrderPay;
dr["总数量"] = item.AllOrderCount;
dr["总金额"] = item.AllOrderPay;
dr["本月退款数量"] = item.RefundOrderCount;
dr["本月退款金额"] = item.RefundPrice;
dr["个人单量"] = item.UserOrderCount;
dr["个人业绩"] = item.UserOrderPrice;
dr["业绩数量"] = item.JsOrderCount;
dr["业绩金额"] = item.JsPrice;
dt.Rows.Add(dr);
}
return File(ExcelHelper.ExportDataTableToExcel(dt, "销售组订单分成"), "application/ms-excel", PageRequest.GetDlownLoadName("销售组订单分成.xls"));
}
#endregion
[HttpGet]
//[AuthorizeRedirect(InitRights.CONST_销售组分成报表)]
public ActionResult NewsOrderReport()
{
return View();
}
[HttpPost]
//[AuthorizeRedirect(InitRights.CONST_销售组分成报表)]
public JsonResult NewsOrderReport(DateTime? sTime, DateTime? eTime, QueryUserComboDto usercomboDto)
{
if (eTime.HasValue)
{
eTime = eTime.Value.AddDays(1);
}
var data = _wxCommission.GetGroupNewsOrderReport(usercomboDto, sTime, eTime);
Table tab = new Table("tablist");
tab.AddHeadCol("GName", "", "组别");
var i = 0;
if (data.Any())
{
var newsOrderProduct = data.FirstOrDefault().OrderProductCount.FirstOrDefault().Value;
foreach (var item in newsOrderProduct)
{
tab.AddHeadCol("Product" + i, "", item.Key);
i++;
}
}
var x = 2 + i;
tab.AddHeadCol("AllOrderCount", "", "总单数", "sortTable('tablist'," + x + ",'float');", true);
x++;
tab.AddHeadCol("AllOrderCount2", "", "合计单数", "sortTable('tablist'," + x + ",'float');", true, true);
x++;
tab.AddHeadCol("AllOrderPrice", "", "总金额");
//foreach (var item in refundOrderProduct)
//{
// tab.AddHeadCol("Product" + i, "", item.Key);
// i++;
//}
x++;
tab.AddHeadCol("RefundOrderCount", "", "退款单数", "sortTable('tablist'," + x + ",'float');", true);
x++;
tab.AddHeadCol("RefundOrderCount2", "", "退款合计单数", "sortTable('tablist'," + x + ",'float');", true);
tab.AddHeadRow();
foreach (var item in data)
{
tab.AddCol(item.GName);
var dic1 = item.OrderProductCount.FirstOrDefault(p => p.Key == item.Gid).Value;
foreach (var item1 in dic1)
{
tab.AddCol(item1.Value);
}
tab.AddCol(item.AllOrderCount);
tab.AddCol(item.AllOrderCount2);
tab.AddCol(item.AllOrderPrice);
//var dic2 = item.RefundOrderProductCount.FirstOrDefault(p => p.Key == item.Gid).Value;
//foreach (var item2 in dic2)
//{
// tab.AddCol(item2.Value);
//}
tab.AddCol(item.RefundOrderCount);
tab.AddCol(item.RefundOrderCount2);
tab.AddRow();
}
var json = new
{
rowsList = tab.GetTable()
//foot = tb.GetFoot()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
public FileResult NewsOrderReportExport(DateTime? sTime, DateTime? eTime, QueryUserComboDto usercomboDto)
{
if (eTime.HasValue)
{
eTime = eTime.Value.AddDays(1);
}
var data = _wxCommission.GetGroupNewsOrderReport(usercomboDto, sTime, eTime);
var dt = new DataTable();
dt.Columns.Add(new DataColumn("组别", typeof(string)));
if (data.Any())
{
var newsOrderProduct = data.FirstOrDefault().OrderProductCount.FirstOrDefault().Value;
foreach (var item in newsOrderProduct)
{
dt.Columns.Add(new DataColumn(item.Key, typeof(decimal)));
}
}
dt.Columns.Add(new DataColumn("总单数", typeof(decimal)));
dt.Columns.Add(new DataColumn("合计单数", typeof(decimal)));
dt.Columns.Add(new DataColumn("总金额", typeof(decimal)));
//foreach (var item in refundOrderProduct)
//{
// dt.Columns.Add(new DataColumn(item.Key, typeof(decimal)));
//}
dt.Columns.Add(new DataColumn("退款单数", typeof(decimal)));
dt.Columns.Add(new DataColumn("退款合计单数", typeof(decimal)));
foreach (var item in data)
{
DataRow dr = dt.NewRow();
dr[0] = item.GName;
var i = 1;
foreach (var item1 in item.OrderProductCount.FirstOrDefault(p => p.Key == item.Gid).Value)
{
dr[i] = item1.Value;
i++;
}
dr["总单数"] = item.AllOrderCount;
dr["合计单数"] = item.AllOrderCount2;
dr["总金额"] = item.AllOrderPrice;
//foreach (var item2 in item.RefundOrderProductCount.FirstOrDefault(p => p.Key == item.Gid).Value)
//{
// dr[i + 3] = item2.Value;
// i++;
//}
dr["退款单数"] = item.RefundOrderCount;
dr["退款合计单数"] = item.RefundOrderCount2;
dt.Rows.Add(dr);
}
return File(ExcelHelper.ExportDataTableToExcel(dt, "组别新单分成"), "application/ms-excel", PageRequest.GetDlownLoadName("组别新单分成.xls"));
}
private List<WX_SZZYSUBPRODUCT> getConfigSubProductList()
{
List<WX_SZZYSUBPRODUCT> list = new List<WX_SZZYSUBPRODUCT>();
var subProductIds = cache_BL.GetValue_Parameter(WX.CRM.Model.Enum.Parameter.WeiXin_OrderCountShowColumn);
if (subProductIds != null)
{
subProductIds = subProductIds.Trim().Trim(',');
string[] idArr = subProductIds.Split(',');
decimal[] ids = idArr.Select(m => Convert.ToDecimal(m)).ToArray();
list = wx_SzzySubProduct_BL.GetList(ids);
}
return list;
}
private class SubProdutCount
{
public decimal CountNum { get; set; }
public decimal TotalCommission { get; set; }
public decimal UserOrderCount { get; set; }
public decimal GroupOrderCount { get; set; }
public decimal? Gid { get; set; }
public decimal SubProductId { get; set; }
public string SubProductName { get; set; }
}
private string DataFormart(string key, object value)
{
string formartValue;
switch (key)
{
default: formartValue = string.Format("{0}", value); break;
}
return formartValue;
}
private class OrderGroupTypeCount
{
public decimal Total { get; set; }
public decimal TotalCommission { get; set; }
public decimal Gid { get; set; }
}
private class OrderGroupAllCount
{
public decimal UserOrderCount { get; set; }
public decimal UserPerformanceAmount { get; set; }
public decimal GroupPerformanceAmount { get; set; }
public decimal Gid { get; set; }
}
}
}