437 lines
18 KiB
C#
437 lines
18 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, string saleDeptId, string groupId, string sort, string order)
|
|
{
|
|
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, sort, order);
|
|
|
|
Table tab = new Table("tablist");
|
|
tab.AddFixedLeftHeadCol("DeptName", "事业部", 100, 50, isSort: false);
|
|
tab.AddFixedLeftHeadCol("GName", "组别", 100, 50, isSort: true);
|
|
tab.AddHeadCol("NewOrderCount", "", "新单数量", isSort: true);
|
|
tab.AddHeadCol("NewOrderPay", "", "新单金额", isSort: true);
|
|
tab.AddHeadCol("RenewOrderCount", "", "续费单数量", isSort: true);
|
|
tab.AddHeadCol("RenewOrderPay", "", "续费单金额", isSort: true);
|
|
tab.AddHeadCol("UpOrderCount", "", "升级单数量", isSort: true);
|
|
tab.AddHeadCol("UpOrderPay", "", "升级单金额", isSort: true);
|
|
tab.AddHeadCol("AllOrderCount", "", "总数量", isSort: true);
|
|
tab.AddHeadCol("AllOrderPay", "", "总金额", isSort: true);
|
|
tab.AddHeadCol("RefundOrderCount", "", "当月退款数量", isSort: true);
|
|
tab.AddHeadCol("RefundOrderPay", "", "当月退款金额", isSort: true);
|
|
tab.AddHeadCol("UserOrderCount", "", "个人单量", isSort: true);
|
|
tab.AddHeadCol("UserOrderPay", "", "个人业绩", isSort: true);
|
|
tab.AddHeadCol("JsOrderCount", "", "业绩数量", isSort: true);
|
|
tab.AddHeadCol("JsOrderPay", "", "业绩金额", isSort: true);
|
|
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.AddHeadRow();
|
|
|
|
foreach (var item in data)
|
|
{
|
|
tab.AddFixedLeftCol(item.DeptName, 100, 50);
|
|
tab.AddFixedLeftCol(item.GName, 100, 50);
|
|
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.RefundOrderPay);
|
|
tab.AddCol(item.UserOrderCount);
|
|
tab.AddCol(item.UserOrderPay);
|
|
tab.AddCol(item.JsOrderCount);
|
|
tab.AddCol(item.JsOrderPay);
|
|
if (companyCode != "SHZZ")
|
|
{
|
|
foreach (var subItem in item.OrderProductList)
|
|
{
|
|
tab.AddCol(subItem.Value);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
tab.AddRow();
|
|
}
|
|
|
|
if (data.Any())
|
|
{
|
|
tab.AddFixedLeftCol("合计", 100, 50);
|
|
tab.AddFixedLeftCol("", 100, 50);
|
|
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.RefundOrderPay));
|
|
tab.AddCol(data.Sum(p => p.UserOrderCount));
|
|
tab.AddCol(data.Sum(p => p.UserOrderPay));
|
|
tab.AddCol(data.Sum(p => p.JsOrderCount));
|
|
tab.AddCol(data.Sum(p => p.JsOrderPay));
|
|
if (companyCode != "SHZZ")
|
|
{
|
|
var orderProduct = data.FirstOrDefault().OrderProductList;
|
|
foreach (var item in orderProduct)
|
|
{
|
|
tab.AddCol(string.Empty);
|
|
}
|
|
}
|
|
|
|
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, string 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("组别"));
|
|
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)));
|
|
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)));
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach (var item in data)
|
|
{
|
|
DataRow dr = dt.NewRow();
|
|
dr[0] = item.GName;
|
|
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.RefundOrderPay;
|
|
dr["个人单量"] = item.UserOrderCount;
|
|
dr["个人业绩"] = item.UserOrderPay;
|
|
dr["业绩数量"] = item.JsOrderCount;
|
|
dr["业绩金额"] = item.JsOrderPay;
|
|
if (companyCode != "SHZZ")
|
|
{
|
|
var i = 15;
|
|
foreach (var item1 in item.OrderProductList)
|
|
{
|
|
dr[i] = item1.Value;
|
|
i++;
|
|
}
|
|
}
|
|
|
|
|
|
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; }
|
|
}
|
|
|
|
}
|
|
}
|